Re-BLAST 2023

Due to the significant changes to GenBank we are re-BLASTing results. To speed things up, I am curating custom BLAST databases using sequences downloaded from GenBank’s Nucleotide database using Entrez Queries to eliminate sequences that are extremely unlikely to be present in our samples that make up a large portion of the Nucleotide database. BLAST is being run locally using CLC Genomics Workbench. I am BLASTing by taxon categories (e.g., viruses, fungi, parasites) as we are limited by computational availability. For example, eliminating the top few viruses (unlikely to be found in mosquitoes) in the nucleotide database reduces the number of sequences by 90%.

Viruses

Entrez Query:

Viruses [ORGN] NOT Coronavirus [ORGN] NOT Human immunodeficiency virus 1 [ORGN] NOT Influenza A virus [ORGN] NOT Hepacivirus C [ORGN] NOT Hepatitis B virus [ORGN] NOT Influenza B virus [ORGN] NOT Rotavirus A [ORGN] NOT Norwalk virus [ORGN] NOT Simian immunodeficiency virus [ORGN]

Re-BLAST 2023 Steps

  1. Concatenate all read mapping data and contigs: 01 - Mappings & Contigs.R
  2. Re-BLAST all contig sequences against local NCBI virus blast (curated via above Entrez Query) using CLC
  3. Read local BLAST results and filter results: 02 - Read Nt Local BLAST.R
  4. BLAST all contig sequences passing filters at NCBI against all organisms to eliminate false positives using CLC
  5. Read BLAST at NCBI results and filter out non-virus sequences: 03 - BLAST at NCBI.R
  6. tBLASTx on contig sequences passing filters from step using local database on CLC to determine aa identites
  7. Read tBLASTx results and filter: 04 - tBLASTx.R

Non-Virus Sequences

Non-virus sequences (e.g., Fungi, parasites, bacteria, plants, vertebrates) were considerably lower in overall number as well as quality. Furthermore, for these reasons, it was difficult to discern species from the recovered sequences. Some of the reasons for this is that compared to viruses where often we recovered the near complete genome, for fungi, parasites, bacteria, plants and vertebrates we recovered mostly rRNA, mitochondrial sequences, or in the case of plants, chloroplast sequences. Therefore, we decided to conduct analyses for non-virus sequences recovered at a higher level (e.g., Family, Genus) rather than species. This still gives us a good idea about what organisms are harboured by mosquitoes.

Methods

Host and Quality Filtering

Chan Zuckerberg ID Metagenomic Pipeline v6.8 (Chan Zuckerberg Biohub; CZID), an open-sourced cloud-based bioinformatics platform (https://czid.org/) was used for quality control and host filtration of reads as well as de novo assembly and taxonomic binning as described by Batson et al., (2021) and Kalantar et al., (2020). The CZID pipeline employs STAR and Bowtie2 to perform host filtration (human and mosquito), Trimmomatic for adapter trimming, Price Seq for removal of low-quality reads, LZW for the removal of low complexity reads and CZIDdedup for duplicate read identification.

De Novo Assembly

The host and quality filtered reads were allowed to continue through the CZID pipeline, which involves de novo assembly with SPADES using default settings and only the assembly module. After assembly, reads are mapped back to contigs with Bowtie2. The host and quality filtered reads from CZID (the Bowtie2 output) were downloaded and assembled with the CLC Genomics Workbench version 20 assembler with a minimum contig length of 250 nt, mismatch cost of 2, insertion cost of 3, deletion cost of 3, length fraction of 0.7 and a similarity fraction of 0.95. Contigs were subject to BLASTn and tBLASTx searches on a custom NCBI viruses database using the above Entrez Query and the NCBI nt database. The BLAST results were very similar between CZID and CLC, thus we opted to use CLC Genomics Workbench version 20 for subsequent analyses.

BLAST

Assembled contigs were subject to BLASTn searches on the NCBI non-redundant nucleotide database, and contigs were assigned to taxa based on BLAST results. Positive contigs from BLASTn were subject to tBLASTx to identify amino acid identities. We were looking for non-mosquito sequences of viral, bacterial, parasitic, fungal and plant origin and discarded sequences that were of mosquito origin.

To begin, BLASTn search results were filtered by E-value (≤1x 10-100) and contig length (≥250). Contigs with a match length of ≥250 nt, ≥90% for both nt and aa sequence similarity were classified as hits. Coverage depth was analyzed on a per-sequence basis: for viruses, we used a minimum threshold of 10X coverage depth, and we were less strict for protozoan, fungal, bacterial, plant and chordate coverage. For virus hits, contigs meeting these criteria were subject to tBLASTx searches to identify amino acid identities.

Contigs of viral origin with a percent nt identity <85% were flagged as potentially novel viruses. While the ICTV sets specific standards for different viral taxa for percent identity to claim a novel virus, many of the viruses we recovered are unclassified beyond the order or family classification, which can make selecting an identity threshold difficult. Therefore, we selected ≤85% as the cut-off because Kalantar et al., (2020) suggests that <90% nt identity is a good general threshold and we opted to be more conservative in our assignments of novel viruses.

Libraries

require(pacman)
pacman::p_load(tidyverse, janitor, here, DT, gt, phylotools, assertr, readxl, patchwork, reshape2, ggtext, openxlsx, grid, tiff)

Load Data

virus_master_2023 <- read_csv(here("Data/tblastx_master.csv"))

Sequencing Summary

# Read count & contigs
virus_master_2023 %>% 
  mutate(reads_log10 = log10(total_read_count)) %>% 
  drop_na(genome) %>% 
  ggplot(aes(x = contig_length, y = reads_log10)) +
  geom_point(aes(colour = genome)) +
  scale_colour_viridis_d("Genome") +
  theme_bw() +
  labs(x = "Contig Length (nt)",
       y = "Reads (Log 10)")

# Read count & contigs (mosquito species)

virus_master_2023 %>% 
  mutate(reads_log10 = log10(total_read_count)) %>% 
  drop_na(genome) %>% 
  ggplot(aes(x = contig_length, y = reads_log10)) +
  geom_point(aes(colour = mosquito_species)) +
  scale_colour_viridis_d("Species") +
  theme_bw() +
  labs(x = "Contig Length (nt)",
       y = "Reads (Log 10)")

# Contig length and coverage
virus_master_2023 %>% 
  mutate(coverage_log10 = log10(coverage)) %>% 
  ggplot(aes(x = contig_length, y = coverage_log10)) +
  geom_point(aes(colour = genome)) +
  scale_colour_viridis_d() +
  theme_bw() +
    labs(x = "Contig Length (nt)",
       y = "Coverage (Log 10)")

# Coverage reads

virus_master_2023 %>% 
  mutate(coverage_log10 = log10(coverage)) %>% 
  mutate(reads_log10 = log10(total_read_count)) %>% 
  ggplot(aes(x = coverage_log10, y = reads_log10)) +
  geom_point(aes(colour = genome)) +
  scale_colour_viridis_d("Genome") +
  theme_bw() +
  labs(x = "Coverage Depth (Log 10)",
       y = "Reads (Log 10)")

# Contig Length and % ID
virus_master_2023 %>% 
  ggplot(aes(x = contig_length, y = greatest_identity_percent)) +
  geom_point(aes(colour = genome)) +
  scale_colour_viridis_d() +
  theme_bw() +
  labs(x = "Contig Length (nt)",
       y = "Percent aa Identity")

BLAST Summary

library_summary <- virus_master_2023 %>%
  group_by(mosquito_species, sample_number) %>%
  summarise(n = n_distinct(mosquito_species)) %>%
  group_by(mosquito_species) %>%
  summarise(n = n()) %>%
  adorn_totals()

years <- virus_master_2023 %>% 
  group_by(collection_year, virus_name) %>% 
  summarise(count = n_distinct(virus_name, collection_year)) %>% 
  pivot_wider(names_from = collection_year, values_from = count, values_fill = 0)

virus_lineage <- virus_master_2023 %>% 
  group_by(virus_name, viral_family, genome) %>% 
  summarise(n = n_distinct(virus_name, viral_family, genome)) %>% 
  select(-"n")

virus_master_2023 %>% 
  group_by(virus_name) %>% 
  summarise(n_contigs = n(),
            mean_cov = mean(coverage),
            min_cov = min(coverage),
            max_cov = max(coverage),
            mean_pid = mean(greatest_identity_percent),
            med_pid = median(greatest_identity_percent),
            min_pid = min(greatest_identity_percent),
            max_pid = max(greatest_identity_percent),
            total_reads = sum(total_read_count),
            longest_contig = max(contig_length)) %>% 
  left_join(virus_lineage, by = "virus_name") %>% 
  group_by(genome, viral_family) %>% 
  arrange(genome, viral_family) %>% 
  relocate(total_reads, .after = "n_contigs") %>% 
  relocate(longest_contig, .after = "n_contigs") %>% 
  mutate(across(.cols = "virus_name",
                ~case_when(grepl("Manitoba", virus_name) & !grepl("Manitoba virus", virus_name) ~ 
                             paste0(., "*"),
                           TRUE ~ .))) %>% 
  gt() %>% 
  fmt_number(columns = mean_cov:max_pid,
             decimals = 2) %>% 
  fmt_number(columns = total_reads,
             sep_mark = ",",
             decimals = 0) %>% 
  tab_spanner(label = "Coverage Depth", columns = c(mean_cov, min_cov, max_cov)) %>% 
  tab_spanner(label = "aa Percent Identity", columns = c(mean_pid, min_pid, max_pid, med_pid)) %>% 
  cols_label(
    n_contigs = "Contigs",
    longest_contig = "Longest Contig (nt)",
    total_reads = "Reads",
    mean_cov = "Mean", min_cov = "Min", max_cov = "Max",
    mean_pid = "Mean", min_pid = "Min", max_pid = "Max", med_pid = "Median",
    virus_name = "Virus") %>% 
  tab_style(
    style = list(cell_fill(color = "grey"),
                 cell_text(weight = "bold")),
    locations = cells_row_groups(groups = everything())
  ) %>% 
  tab_style(
    style = cell_borders(
      sides = "left",
      weight = px(2),
      color = "grey"),
    locations = cells_body(
      columns = c(mean_cov, mean_pid, "n_contigs")
    )
  ) %>% 
  data_color(
    columns = mean_pid:max_pid,
    palette = "viridis"
    
  ) %>% 
  tab_footnote("* Putatively novel virus.")
Virus Contigs Longest Contig (nt) Reads Coverage Depth aa Percent Identity
Mean Min Max Mean Min Max Median
+ssRNA - Dicistroviridae
Black queen cell virus 2 6035 1,613 17.00 11.15 22.85 100.00 100.00 100.00 100.00
Manitoba dicistro-like virus 1* 1 7146 10,688 149.27 149.27 149.27 82.61 82.61 82.61 82.61
Soybean thrips dicistrovirus 11 9121 11,192 17.32 10.11 29.01 100.00 100.00 100.00 100.00
+ssRNA - Flaviviridae
Inari jingmenvirus 1 1267 139 11.02 11.02 11.02 100.00 100.00 100.00 100.00
Placeda virus 169 11737 106,682 90.37 10.02 1,114.82 97.87 86.24 100.00 98.55
+ssRNA - Iflaviridae
Cafluga virus 2 3426 976 20.82 19.41 22.24 99.77 99.55 100.00 99.77
Culex Iflavi-like virus 4 23 9811 13,815 22.81 10.65 58.90 99.81 96.20 100.00 100.00
Culex iflavilike virus 3 183 1824 266,451 284.65 18.65 1,269.06 99.49 94.19 100.00 100.00
Hanko iflavirus 1 30 9246 2,938,402 3,394.01 10.99 19,795.35 97.49 93.45 100.00 97.30
Hanko iflavirus 2 16 9206 19,456 93.72 18.50 208.48 97.05 89.58 100.00 100.00
Hubei arthropod virus 1 1 2967 352 11.95 11.95 11.95 100.00 100.00 100.00 100.00
Manitoba iflavirus 1* 13 2435 10,000 78.09 16.30 242.52 78.42 67.08 83.54 79.47
Manitoba picorna-like virus 1* 20 2114 15,071 70.96 18.52 207.10 81.99 73.93 84.96 83.10
Pedersore iflavirus 25 9899 39,865 28.41 10.35 266.71 93.47 89.14 100.00 93.38
Soybean thrips iflavirus 4 1 3835 636 16.60 16.60 16.60 100.00 100.00 100.00 100.00
Thrace picorna-like virus 1 2 1172 2,010 82.45 34.10 130.79 91.62 89.58 93.65 91.62
Yongsan picorna-like virus 1 64 4085 55,324 62.58 10.27 180.88 89.40 85.05 100.00 89.11
Yongsan picorna-like virus 2 4 9573 58,132 165.26 34.98 535.91 100.00 100.00 100.00 100.00
+ssRNA - Luteoviridae
Marma virus 23 3160 39,344 70.95 11.62 129.64 100.00 100.00 100.00 100.00
+ssRNA - Narnaviridae
Culex narnavirus 1 1 513 63 12.07 12.07 12.07 100.00 100.00 100.00 100.00
Manitoba narnavirus 1* 2 1760 391 18.77 13.02 24.52 80.59 80.29 80.89 80.59
+ssRNA - Negevirus
Big Cypress virus 3 9570 6,079 37.12 18.89 65.64 98.77 96.30 100.00 100.00
Bro virus 1 11375 3,826 33.85 33.85 33.85 90.00 90.00 90.00 90.00
Cordoba virus 14 5133 135,594 548.17 17.51 2,225.85 97.10 93.75 100.00 97.23
Manitoba mononega-like virus 1* 1 11180 6,558 59.07 59.07 59.07 73.21 73.21 73.21 73.21
Manitoba mononega-like virus 2* 1 2477 494 20.03 20.03 20.03 75.00 75.00 75.00 75.00
Manitoba mononega-like virus 3* 1 5456 2,317 42.65 42.65 42.65 78.57 78.57 78.57 78.57
Mekrijarvi Negevirus 6 9873 167,549 294.01 30.28 1,262.63 94.13 90.78 100.00 93.40
Utsjoki negevirus 3 2 989 416 21.12 18.00 24.24 99.02 99.01 99.03 99.02
+ssRNA - Nodaviridae
Hubei noda-like virus 12 2 4762 4,244 54.47 23.60 85.34 95.83 91.67 100.00 95.83
+ssRNA - Tombusviridae
Des Moines River virus 4 2361 35,117 486.06 34.94 897.17 100.00 100.00 100.00 100.00
Hubei mosquito virus 4 6 5103 2,919 16.68 10.02 39.59 96.50 92.65 100.00 95.70
Manitoba tombus-like virus 1* 5 2340 15,873 157.57 74.52 277.22 75.68 72.73 76.92 76.19
Tiger mosquito bi-segmented tombus-like virus 1 2351 13,049 557.41 557.41 557.41 100.00 100.00 100.00 100.00
+ssRNA - Tymoviridae
Hubei macula-like virus 3 8 6059 530,385 1,092.52 11.15 7,749.86 96.13 92.15 100.00 96.63
Manitoba tymo-like virus 1* 1 6302 1,482 23.67 23.67 23.67 66.79 66.79 66.79 66.79
+ssRNA - Virgaviridae
Hubei virga-like virus 2 6 947 505 13.26 10.94 15.50 99.04 96.27 100.00 100.00
Manitoba virgavirus 1* 1 1675 186 11.06 11.06 11.06 83.83 83.83 83.83 83.83
-ssRNA - Chuviridae
Chuvirus 39 6799 22,130 28.00 10.17 214.52 97.49 89.66 100.00 97.02
-ssRNA - Orthomyxoviridae
Astopletus virus 29 1044 5,975 32.63 10.91 107.95 99.06 95.77 100.00 100.00
Wuhan mosquito virus 6 101 2467 133,667 176.35 12.58 641.58 99.76 97.69 100.00 100.00
-ssRNA - Peribunyaviridae
Culex bunyavirus 2 19 1896 6,255 23.92 10.28 49.84 100.00 100.00 100.00 100.00
-ssRNA - Rhabdoviridae
Canya virus 9 2444 2,613 29.27 11.64 66.33 90.87 85.05 100.00 85.92
Culex Rhabdo-like virus 4 1973 807 14.68 10.87 23.28 100.00 100.00 100.00 100.00
Culex rhabdovirus 2 429 997 116.26 74.47 158.06 100.00 100.00 100.00 100.00
Elisy virus 21 1817 3,849 19.29 10.10 40.69 99.27 96.41 100.00 100.00
Flanders hapavirus 81 8773 104,235 113.05 10.00 686.87 99.90 95.96 100.00 100.00
Manitoba Rhabdovirus 1* 20 5085 13,911 26.41 10.21 68.72 77.30 69.42 83.33 77.90
Manitoba rhabdovirus 2* 1 4648 2,401 51.70 51.70 51.70 75.00 75.00 75.00 75.00
Manitoba rhabdovirus 3* 5 6071 1,153 16.51 11.30 23.92 80.94 66.04 84.85 84.62
Manitoba virus 5 1589 1,003 19.71 15.74 24.80 99.76 98.80 100.00 100.00
Merida virus 55 7483 76,697 91.60 11.06 276.87 99.86 97.14 100.00 100.00
Riverside virus 1 17 8033 18,623 45.08 10.80 120.41 90.20 85.32 93.01 90.00
dsDNA - Iridoviridae
Manitoba iridescent virus 1* 1 797 137 16.99 16.99 16.99 78.74 78.74 78.74 78.74
dsRNA - Birnaviridae
Ballard Lake virus 48 3472 682,541 431.81 10.84 2,260.59 99.86 93.27 100.00 100.00
dsRNA - Partitiviridae
Partitivirus-like Culex mosquito virus 12 1751 4,477 23.28 11.49 45.83 100.00 100.00 100.00 100.00
dsRNA - Totiviridae
Gouley virus 3 368 117 12.22 10.42 14.89 95.04 92.86 97.67 94.59
Hattula totivirus 1 1 4909 702 14.41 14.41 14.41 89.07 89.07 89.07 89.07
Manitoba toti-like virus 1* 5 8930 13,869 39.82 11.18 127.46 69.92 67.43 73.11 68.10
Manitoba toti-like virus 2* 1 3123 418 13.45 13.45 13.45 60.24 60.24 60.24 60.24
Manitoba toti-like virus 3* 4 4626 1,772 15.11 11.20 18.40 73.53 72.22 74.90 73.50
Snelk virus 4 295 496 41.15 23.15 67.61 100.00 100.00 100.00 100.00
ssDNA - Parvoviridae
Aedes albopictus densovirus 4 3355 14,051 139.82 94.27 203.18 97.46 89.86 100.00 100.00
Aedes vexans densovirus isolate 1 3367 594 17.69 17.69 17.69 100.00 100.00 100.00 100.00
Culex densovirus 8 1697 6,035 127.22 11.65 490.03 99.56 97.71 100.00 100.00
Grus japonensis parvoviridae 1 570 366 60.82 60.82 60.82 100.00 100.00 100.00 100.00
* Putatively novel virus.

Virus Detections by Species

virus_master_2023 %>% 
  group_by(mosquito_species, virus_name) %>% 
  summarise(count = n_distinct(virus_name, sample_number)) %>% 
  pivot_wider(names_from = mosquito_species, values_from = count, values_fill = 0) %>% 
  mutate("Aedes canadensis \n Total: 1" = (`Aedes canadensis` / 1) * 100,
         "Aedes vexans \n Total: 19" = (`Aedes vexans` / 19) * 100,
         "Anopheles earlei \n Total: 1" = (`Anopheles earlei` / 1) * 100,
         "Coquillettidia perturbans \n Total: 6" = (`Coquillettidia perturbans` / 6) * 100,
         "Culex tarsalis \n Total: 11" = (`Culex tarsalis` / 11) * 100,
         "Ochlerotatus dorsalis \n Total: 5" = (`Ochlerotatus dorsalis` / 5) * 100,
         "Ochlerotatus flavescens \n Total: 1" = (`Ochlerotatus flavescens` / 1) * 100,
         "Ochlerotatus triseriatus \n Total: 1" = (`Ochlerotatus triseriatus` / 1) * 100,
  ) %>% select(-`Aedes canadensis`:-`Ochlerotatus triseriatus`) %>% 
  left_join(virus_lineage, by = "virus_name") %>% 
   left_join(years, by = "virus_name") %>% 
   relocate("2020", .after = "virus_name") %>% relocate("2021", .after = "2020") %>% 
   mutate(across(.cols = c("2020", "2021"),
                 ~case_when(. == "1" ~ TRUE,
                            . == "0" ~ FALSE))) %>% 
   mutate(across(.cols = "virus_name",
                 ~case_when(grepl("Manitoba", virus_name) & !grepl("Manitoba virus", virus_name) ~ 
                              paste0(., "*"),
                            TRUE ~ .))) %>% 
  group_by(genome, viral_family) %>% 
  arrange(genome, viral_family) %>% 
  gt() %>% 
  fmt_number(columns = "Aedes canadensis \n Total: 1":"Ochlerotatus triseriatus \n Total: 1",
             decimals = 2) %>% 
  tab_spanner(label = "Percent of Libraries Detected by Species", 
              columns = c("Aedes canadensis \n Total: 1":"Ochlerotatus triseriatus \n Total: 1")) %>% 
   tab_spanner(label = html("Years Detected"),
               columns = c("2020":"2021")) %>% 
  cols_label(
    "Aedes canadensis \n Total: 1" = html("<em>Aedes canadensis</em> <br> Total: 1"),
    "Aedes vexans \n Total: 19" = html("<em>Aedes vexans</em> <br> Total: 19"),
    "Anopheles earlei \n Total: 1" = html("<em>Anopheles earlei</em> <br> Total: 1"),
    "Coquillettidia perturbans \n Total: 6" = html("<em>Coquillettidia perturbans</em> <br> Total: 6"),
    "Culex tarsalis \n Total: 11" = html("<em>Culex tarsalis</em> <br> Total: 11"),
    "Ochlerotatus dorsalis \n Total: 5" = html("<em>Ochlerotatus dorsalis</em> <br> Total: 5"),
    "Ochlerotatus flavescens \n Total: 1" = html("<em>Ochlerotatus flavescens</em> <br> Total: 1"),
    "Ochlerotatus triseriatus \n Total: 1" = html("<em>Ochlerotatus triseriatus</em> <br> Total: 1"),
    virus_name = "Virus") %>% 
   cols_align(align = "center",
              columns = "2020":"Ochlerotatus triseriatus \n Total: 1") %>% 
   tab_style(
     style = list(cell_fill(color = "grey"),
                  cell_text(weight = "bold")),
     locations = cells_row_groups(groups = everything())) %>% 
   data_color(columns = `Aedes canadensis \n Total: 1`:last_col(),
              palette = "viridis", 
              direction = "row") %>% 
   tab_style(
     style = cell_borders(
       sides = "left",
       weight = px(2),
       color = "black"),
     locations = cells_body(
       columns = c("Aedes canadensis \n Total: 1"))) %>% 
  tab_footnote("* Putatively novel virus") %>% 
  tab_options(., container.width = 1500)
Virus Years Detected Percent of Libraries Detected by Species
2020 2021 Aedes canadensis
Total: 1
Aedes vexans
Total: 19
Anopheles earlei
Total: 1
Coquillettidia perturbans
Total: 6
Culex tarsalis
Total: 11
Ochlerotatus dorsalis
Total: 5
Ochlerotatus flavescens
Total: 1
Ochlerotatus triseriatus
Total: 1
+ssRNA - Dicistroviridae
Black queen cell virus TRUE FALSE 0.00 5.26 0.00 0.00 0.00 0.00 0.00 0.00
Soybean thrips dicistrovirus TRUE TRUE 0.00 15.79 0.00 0.00 45.45 20.00 0.00 0.00
Manitoba dicistro-like virus 1* TRUE FALSE 0.00 0.00 0.00 0.00 9.09 0.00 0.00 0.00
+ssRNA - Flaviviridae
Inari jingmenvirus TRUE FALSE 0.00 5.26 0.00 0.00 0.00 0.00 0.00 0.00
Placeda virus TRUE TRUE 0.00 10.53 0.00 0.00 100.00 0.00 0.00 0.00
+ssRNA - Iflaviridae
Hanko iflavirus 1 TRUE TRUE 0.00 21.05 0.00 16.67 9.09 100.00 100.00 0.00
Hanko iflavirus 2 TRUE TRUE 0.00 57.89 0.00 16.67 0.00 20.00 0.00 0.00
Hubei arthropod virus 1 FALSE TRUE 0.00 5.26 0.00 0.00 0.00 0.00 0.00 0.00
Manitoba iflavirus 1* TRUE TRUE 0.00 47.37 0.00 0.00 0.00 20.00 0.00 0.00
Manitoba picorna-like virus 1* TRUE TRUE 0.00 63.16 0.00 0.00 0.00 0.00 0.00 0.00
Pedersore iflavirus TRUE TRUE 0.00 36.84 0.00 33.33 27.27 80.00 100.00 0.00
Thrace picorna-like virus 1 FALSE TRUE 0.00 10.53 0.00 0.00 0.00 0.00 0.00 0.00
Yongsan picorna-like virus 1 TRUE TRUE 0.00 94.74 0.00 0.00 0.00 60.00 0.00 0.00
Cafluga virus TRUE FALSE 0.00 0.00 0.00 16.67 0.00 20.00 0.00 0.00
Soybean thrips iflavirus 4 TRUE FALSE 0.00 0.00 0.00 16.67 0.00 0.00 0.00 0.00
Culex Iflavi-like virus 4 TRUE TRUE 0.00 0.00 0.00 0.00 63.64 0.00 0.00 0.00
Culex iflavilike virus 3 TRUE TRUE 0.00 0.00 0.00 0.00 100.00 0.00 0.00 0.00
Yongsan picorna-like virus 2 TRUE TRUE 0.00 0.00 0.00 0.00 27.27 0.00 0.00 0.00
+ssRNA - Luteoviridae
Marma virus TRUE TRUE 0.00 0.00 0.00 16.67 100.00 0.00 0.00 0.00
+ssRNA - Narnaviridae
Manitoba narnavirus 1* FALSE TRUE 0.00 0.00 100.00 0.00 0.00 0.00 0.00 0.00
Culex narnavirus 1 TRUE FALSE 0.00 0.00 0.00 0.00 9.09 0.00 0.00 0.00
+ssRNA - Negevirus
Bro virus FALSE TRUE 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Manitoba mononega-like virus 1* FALSE TRUE 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Manitoba mononega-like virus 2* FALSE TRUE 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Big Cypress virus TRUE TRUE 0.00 15.79 0.00 0.00 0.00 0.00 0.00 0.00
Cordoba virus FALSE TRUE 0.00 15.79 0.00 0.00 0.00 0.00 0.00 0.00
Mekrijarvi Negevirus TRUE TRUE 0.00 15.79 0.00 0.00 0.00 60.00 0.00 0.00
Utsjoki negevirus 3 TRUE FALSE 0.00 10.53 0.00 0.00 0.00 0.00 0.00 0.00
Manitoba mononega-like virus 3* TRUE FALSE 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
+ssRNA - Nodaviridae
Hubei noda-like virus 12 FALSE TRUE 0.00 0.00 0.00 16.67 9.09 0.00 0.00 0.00
+ssRNA - Tombusviridae
Des Moines River virus TRUE FALSE 0.00 5.26 0.00 0.00 27.27 0.00 0.00 0.00
Hubei mosquito virus 4 TRUE TRUE 0.00 0.00 0.00 0.00 54.55 0.00 0.00 0.00
Manitoba tombus-like virus 1* TRUE TRUE 0.00 0.00 0.00 0.00 45.45 0.00 0.00 0.00
Tiger mosquito bi-segmented tombus-like virus FALSE TRUE 0.00 0.00 0.00 0.00 9.09 0.00 0.00 0.00
+ssRNA - Tymoviridae
Hubei macula-like virus 3 TRUE TRUE 0.00 21.05 0.00 0.00 0.00 20.00 0.00 0.00
Manitoba tymo-like virus 1* FALSE TRUE 0.00 5.26 0.00 0.00 0.00 0.00 0.00 0.00
+ssRNA - Virgaviridae
Hubei virga-like virus 2 TRUE TRUE 0.00 0.00 0.00 0.00 36.36 0.00 0.00 0.00
Manitoba virgavirus 1* TRUE FALSE 0.00 0.00 0.00 0.00 0.00 20.00 0.00 0.00
-ssRNA - Chuviridae
Chuvirus TRUE TRUE 0.00 89.47 0.00 0.00 9.09 60.00 0.00 0.00
-ssRNA - Orthomyxoviridae
Wuhan mosquito virus 6 TRUE TRUE 0.00 10.53 0.00 16.67 100.00 0.00 0.00 0.00
Astopletus virus TRUE TRUE 0.00 0.00 0.00 0.00 100.00 0.00 0.00 0.00
-ssRNA - Peribunyaviridae
Culex bunyavirus 2 TRUE TRUE 0.00 0.00 0.00 0.00 100.00 0.00 0.00 0.00
-ssRNA - Rhabdoviridae
Manitoba rhabdovirus 3* TRUE TRUE 100.00 0.00 0.00 0.00 36.36 0.00 0.00 0.00
Flanders hapavirus TRUE TRUE 0.00 15.79 0.00 0.00 90.91 0.00 0.00 0.00
Manitoba Rhabdovirus 1* TRUE TRUE 0.00 73.68 0.00 0.00 0.00 20.00 0.00 0.00
Manitoba rhabdovirus 2* TRUE FALSE 0.00 5.26 0.00 0.00 0.00 0.00 0.00 0.00
Riverside virus 1 TRUE TRUE 0.00 73.68 0.00 0.00 0.00 20.00 0.00 0.00
Canya virus TRUE TRUE 0.00 0.00 0.00 0.00 63.64 0.00 0.00 0.00
Culex Rhabdo-like virus TRUE TRUE 0.00 0.00 0.00 0.00 27.27 0.00 0.00 0.00
Culex rhabdovirus FALSE TRUE 0.00 0.00 0.00 0.00 18.18 0.00 0.00 0.00
Elisy virus TRUE TRUE 0.00 0.00 0.00 0.00 45.45 0.00 0.00 0.00
Manitoba virus FALSE TRUE 0.00 0.00 0.00 0.00 9.09 0.00 0.00 0.00
Merida virus TRUE TRUE 0.00 0.00 0.00 0.00 100.00 0.00 0.00 0.00
dsDNA - Iridoviridae
Manitoba iridescent virus 1* FALSE TRUE 0.00 0.00 0.00 16.67 0.00 0.00 0.00 0.00
dsRNA - Birnaviridae
Ballard Lake virus TRUE TRUE 0.00 100.00 0.00 66.67 18.18 20.00 0.00 0.00
dsRNA - Partitiviridae
Partitivirus-like Culex mosquito virus TRUE TRUE 0.00 0.00 0.00 0.00 100.00 0.00 0.00 0.00
dsRNA - Totiviridae
Manitoba toti-like virus 2* FALSE TRUE 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Manitoba toti-like virus 1* TRUE TRUE 0.00 10.53 0.00 0.00 27.27 0.00 0.00 0.00
Gouley virus TRUE FALSE 0.00 0.00 0.00 0.00 27.27 0.00 0.00 0.00
Snelk virus TRUE TRUE 0.00 0.00 0.00 0.00 36.36 0.00 0.00 0.00
Manitoba toti-like virus 3* TRUE FALSE 0.00 0.00 0.00 0.00 0.00 80.00 0.00 0.00
Hattula totivirus 1 TRUE FALSE 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
ssDNA - Parvoviridae
Aedes vexans densovirus isolate FALSE TRUE 0.00 5.26 0.00 0.00 0.00 0.00 0.00 0.00
Culex densovirus TRUE TRUE 0.00 5.26 0.00 66.67 9.09 0.00 0.00 0.00
Aedes albopictus densovirus FALSE TRUE 0.00 0.00 0.00 33.33 9.09 0.00 0.00 0.00
Grus japonensis parvoviridae FALSE TRUE 0.00 0.00 0.00 16.67 0.00 0.00 0.00 0.00
* Putatively novel virus

Viral Families

virus_master_2023 %>% 
  distinct(virus_name, viral_family, .keep_all = TRUE) %>% 
  group_by(genome, viral_family) %>% 
  summarise(n = n()) %>% 
  arrange(genome, n) %>%
  ggplot(aes(x = fct_inorder(viral_family), y = n)) +
  geom_col(aes(fill = genome)) +
  scale_fill_viridis_d("Genome") +
  scale_y_continuous(limits = c(0, 14), breaks = c(0, 2, 4, 6, 8, 10, 12, 14), expand = c(0,0)) +
  coord_flip() + 
  theme_bw() +
  labs(x = "Viral Family",
       y = "Number of Distinct Viruses Detected")

virus_master_2023 %>% 
  filter(novel_flag == "Not Novel") %>% 
  distinct(virus_name, viral_family, .keep_all = TRUE) %>% 
  group_by(genome, viral_family) %>% 
  summarise(n = n()) %>% 
  arrange(genome, n) %>%
  ggplot(aes(x = fct_inorder(viral_family), y = n)) +
  geom_col(aes(fill = genome)) +
  scale_fill_viridis_d("Genome") +
  scale_y_continuous(limits = c(0, 12), breaks = c(0, 2, 4, 6, 8, 10, 12), expand = c(0,0)) +
  coord_flip() + 
  theme_bw() +
  labs(x = "Viral Family",
       y = "Number of Distinct Viruses Detected")

virus_master_2023 %>% 
  filter(novel_flag != "Not Novel") %>% 
  distinct(virus_name, viral_family, .keep_all = TRUE) %>% 
  group_by(genome, viral_family) %>% 
  summarise(n = n()) %>% 
  arrange(genome, n) %>%
  ggplot(aes(x = fct_inorder(viral_family), y = n)) +
  geom_col(aes(fill = genome)) +
  scale_fill_viridis_d("Genome") +
  scale_y_continuous(limits = c(0, 4), breaks = c(0, 1, 2, 3, 4), expand = c(0,0)) +
  coord_flip() + 
  theme_bw() +
  labs(x = "Viral Family",
       y = "Number of Distinct Viruses Detected")

virus_master_2023 %>% 
  distinct(virus_name, viral_family, .keep_all = TRUE) %>% 
  group_by(genome, viral_family) %>% 
  summarise(n = n()) %>% 
  arrange(genome, desc(n)) %>% 
  adorn_totals() %>% 
  gt() %>% 
  cols_label(
    genome = "Genome",
    viral_family = "Family")
Genome Family n
+ssRNA Iflaviridae 13
+ssRNA Negevirus 8
+ssRNA Tombusviridae 4
+ssRNA Dicistroviridae 3
+ssRNA Flaviviridae 2
+ssRNA Narnaviridae 2
+ssRNA Tymoviridae 2
+ssRNA Virgaviridae 2
+ssRNA Luteoviridae 1
+ssRNA Nodaviridae 1
-ssRNA Rhabdoviridae 11
-ssRNA Orthomyxoviridae 2
-ssRNA Chuviridae 1
-ssRNA Peribunyaviridae 1
dsDNA Iridoviridae 1
dsRNA Totiviridae 6
dsRNA Birnaviridae 1
dsRNA Partitiviridae 1
ssDNA Parvoviridae 4
Total - 66
virus_master_2023 %>% 
  distinct(virus_name, viral_family, .keep_all = TRUE) %>% 
  group_by(genome, viral_family) %>% 
  summarise(n = n()) %>% 
  arrange(genome, desc(n)) %>% 
  adorn_totals() %>% 
  gt() %>% 
  cols_label(
    genome = "Genome",
    viral_family = "Family")
Genome Family n
+ssRNA Iflaviridae 13
+ssRNA Negevirus 8
+ssRNA Tombusviridae 4
+ssRNA Dicistroviridae 3
+ssRNA Flaviviridae 2
+ssRNA Narnaviridae 2
+ssRNA Tymoviridae 2
+ssRNA Virgaviridae 2
+ssRNA Luteoviridae 1
+ssRNA Nodaviridae 1
-ssRNA Rhabdoviridae 11
-ssRNA Orthomyxoviridae 2
-ssRNA Chuviridae 1
-ssRNA Peribunyaviridae 1
dsDNA Iridoviridae 1
dsRNA Totiviridae 6
dsRNA Birnaviridae 1
dsRNA Partitiviridae 1
ssDNA Parvoviridae 4
Total - 66

Novel Viruses

virus_master_2023 %>% 
  distinct(virus_name, viral_family, .keep_all = TRUE) %>% 
  filter(str_detect(virus_name, "Manitoba ")) %>% 
  filter(!str_detect(virus_name, "Manitoba virus")) %>% 
  group_by(genome, viral_family) %>% 
  summarise(n = n()) %>% 
  gt()
viral_family n
+ssRNA
Dicistroviridae 1
Iflaviridae 2
Narnaviridae 1
Negevirus 3
Tombusviridae 1
Tymoviridae 1
Virgaviridae 1
-ssRNA
Rhabdoviridae 3
dsDNA
Iridoviridae 1
dsRNA
Totiviridae 3
virus_master_2023 %>% 
  distinct(virus_name, viral_family, .keep_all = TRUE) %>% 
  filter(str_detect(virus_name, "Manitoba ")) %>% 
  filter(!str_detect(virus_name, "Manitoba virus")) %>% 
  group_by(genome, virus_name) %>% 
  summarise(n = n()) %>% 
  adorn_totals() %>% 
  gt()
genome virus_name n
+ssRNA Manitoba dicistro-like virus 1 1
+ssRNA Manitoba iflavirus 1 1
+ssRNA Manitoba mononega-like virus 1 1
+ssRNA Manitoba mononega-like virus 2 1
+ssRNA Manitoba mononega-like virus 3 1
+ssRNA Manitoba narnavirus 1 1
+ssRNA Manitoba picorna-like virus 1 1
+ssRNA Manitoba tombus-like virus 1 1
+ssRNA Manitoba tymo-like virus 1 1
+ssRNA Manitoba virgavirus 1 1
-ssRNA Manitoba Rhabdovirus 1 1
-ssRNA Manitoba rhabdovirus 2 1
-ssRNA Manitoba rhabdovirus 3 1
dsDNA Manitoba iridescent virus 1 1
dsRNA Manitoba toti-like virus 1 1
dsRNA Manitoba toti-like virus 2 1
dsRNA Manitoba toti-like virus 3 1
Total - 17

Virus Profiles

Below are summaries for each virus detected.

virus_profile_table <- function(virus) {

 virus_table <<-  virus_master_2023 %>% 
  filter(virus_name == virus) %>% 
  #select(-"contig_sequences") %>% 
  summarise(
    num_species = n_distinct(mosquito_species),
    num_contig = n(),
    longest_contig = max(contig_length),
    shortest_contig = min(contig_length),
    avg_nt_id = mean(greatest_identity_percent),
    max_nt_id = max(greatest_identity_percent),
    min_nt_id = min(greatest_identity_percent)
    
  ) %>% 
  gt() %>% 
  cols_label(
    longest_contig = "Max Contig",
    shortest_contig = "Min Contig",
    avg_nt_id = "Average aa Id",
    max_nt_id = "Max aa Id",
    min_nt_id = "Min aa Id",
    num_contig = "n Contigs",
    num_species = "n Species"
  ) %>% 
  tab_header(
    title = paste0("Summary Stats for", " ", virus)
  ) %>% 
    fmt_number(
      columns = 4:last_col(),
      decimals = 2
    )

}
# Arrange df for virus reporting
virus_master_2023 <<- virus_master_2023 %>% 
  mutate(across(.cols = "virus_name",
                ~case_when(grepl("Manitoba", virus_name) & !grepl("Manitoba virus", virus_name) ~ 
                             paste0(., "*"),
                           TRUE ~ .))) %>% 
  arrange(desc(genome)) %>% 
  drop_na(virus_name)

for(virus in unique(virus_master_2023$virus_name)) {

  genome <- virus_master_2023 %>% 
    arrange(desc(genome)) %>% 
    drop_na(virus_name) %>%  
    filter(virus_name == virus) %>% 
    pull(genome) %>% 
    head(1)
  
  genome <- paste0(genome)
  
  family <- virus_master_2023 %>% 
    filter(virus_name == virus) %>% 
    pull(viral_family) %>% 
    head(1)
  
  family <- paste0(family)

  sample_detections <- virus_master_2023 %>% 
    filter(virus_name == virus) %>% 
    distinct(sample_number)
  sample_detections <- paste0(nrow(sample_detections))
  
  
  cat('\n\n##', virus, '\n\n')
  
  cat('\n\n>', virus, 'has a ', genome, 'genome and is a member of the family', family, 'and was detected in', sample_detections, 'sample(s).', 'See summary figures and tables below.',  '\n\n')
  
print(suppressMessages(
  virus_master_2023 %>% 
    filter(virus_name == virus) %>% 
    select(-"contig_sequence") %>% 
    group_by(mosquito_species, collection_year, location_pool) %>% 
    summarise(n = n_distinct(sample_number)) %>% 
    ggplot(aes(x = mosquito_species, y = n, fill = location_pool)) +
    geom_col() +
    facet_grid(. ~ collection_year) +
    scale_fill_viridis_d("Location", option = "magma") +
    theme_bw() +
    labs(title = paste0("Number of Virus Detections"),
       subtitle = paste0("For ", virus, " by Year, Species and Location")) +
    theme(plot.title = element_text(size = 16, face = "bold"),
        axis.title.x = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 0.5))
  ))
  
  cat('\n\n###', 'Years {.unlisted .unnumbered}', '\n\n')

  print(htmltools::tagList(
    virus_master_2023 %>% 
      filter(virus_name == virus) %>% 
      group_by(collection_year) %>% 
      summarise(n = n_distinct(sample_number)) %>% 
      gt() %>% 
      cols_label(collection_year = "Year(s) Detected")
    ))
  
  cat('\n\n###', 'Locations {.unlisted .unnumbered}', '\n\n')
  
    print(htmltools::tagList(
    virus_master_2023 %>% 
      filter(virus_name == virus) %>% 
      group_by(location_pool) %>% 
      summarise(n = n_distinct(sample_number)) %>% 
      gt() %>% 
      cols_label(location_pool = "Location(s) Detected")
    ))
    
    cat('\n\n###', 'Mosquito Species {.unlisted .unnumbered}', '\n\n')
  
    print(htmltools::tagList(
    virus_master_2023 %>% 
      filter(virus_name == virus) %>% 
      group_by(mosquito_species) %>% 
      summarise(n = n_distinct(sample_number)) %>% 
      gt() %>% 
      cols_label(mosquito_species = "Mosquito Hosts")
    ))
    
    cat('\n\n###', 'Contig Summary {.unlisted .unnumbered}', '\n\n')

  virus_profile_table(virus)
  
  print(htmltools::tagList(virus_table))
  
  cat('\n\n###', 'aa Identity Summary {.unlisted .unnumbered}', '\n\n')
  
  print(suppressMessages(
  virus_master_2023 %>% 
    filter(virus_name == virus) %>% 
    select(-"contig_sequence") %>% 
    ggplot(aes(x = greatest_identity_percent)) +
    geom_histogram(aes(fill = greatest_identity_percent < 85)) +
    geom_vline(xintercept = 85, linetype = "dotted", colour = "firebrick") +
    theme_bw() +
    labs(title = paste0("aa Identity"),
       subtitle = paste0("For ", virus),
       x = "aa Identity", 
       y = "Number of Contigs") +
    theme(plot.title = element_text(size = 16, face = "bold"),
        axis.title.x = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 0.5)) +
    theme(legend.position = "none")
  ))
  
}

Culex densovirus

Culex densovirus has a ssDNA genome and is a member of the family Parvoviridae and was detected in 6 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 3
2021 3

Locations

Location(s) Detected n
Cypress River 3
Cypress River & Carberry 1
Shoal Lake 1
Western MB 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 1
Coquillettidia perturbans 4
Culex tarsalis 1

Contig Summary

Summary Stats for Culex densovirus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
3 8 1697 393.00 99.56 100.00 97.71

aa Identity Summary

Aedes albopictus densovirus

Aedes albopictus densovirus has a ssDNA genome and is a member of the family Parvoviridae and was detected in 3 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2021 3

Locations

Location(s) Detected n
Cypress River 2
Virden 1

Mosquito Species

Mosquito Hosts n
Coquillettidia perturbans 2
Culex tarsalis 1

Contig Summary

Summary Stats for Aedes albopictus densovirus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
2 4 3355 323.00 97.46 100.00 89.86

aa Identity Summary

Aedes vexans densovirus isolate

Aedes vexans densovirus isolate has a ssDNA genome and is a member of the family Parvoviridae and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2021 1

Locations

Location(s) Detected n
Cypress River 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 1

Contig Summary

Summary Stats for Aedes vexans densovirus isolate
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 1 3367 3,367.00 100.00 100.00 100.00

aa Identity Summary

Grus japonensis parvoviridae

Grus japonensis parvoviridae has a ssDNA genome and is a member of the family Parvoviridae and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2021 1

Locations

Location(s) Detected n
Cypress River 1

Mosquito Species

Mosquito Hosts n
Coquillettidia perturbans 1

Contig Summary

Summary Stats for Grus japonensis parvoviridae
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 1 570 570.00 100.00 100.00 100.00

aa Identity Summary

Snelk virus

Snelk virus has a dsRNA genome and is a member of the family Totiviridae and was detected in 4 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 3
2021 1

Locations

Location(s) Detected n
Brandon 1
Carberry 1
Cypress River & Carberry 1
Shoal Lake, Virden & Souris 1

Mosquito Species

Mosquito Hosts n
Culex tarsalis 4

Contig Summary

Summary Stats for Snelk virus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 4 295 262.00 100.00 100.00 100.00

aa Identity Summary

Partitivirus-like Culex mosquito virus

Partitivirus-like Culex mosquito virus has a dsRNA genome and is a member of the family Partitiviridae and was detected in 11 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 5
2021 6

Locations

Location(s) Detected n
Boissevain 1
Brandon 3
Carberry 1
Cypress River 1
Cypress River & Carberry 1
Shoal Lake 1
Shoal Lake, Virden & Souris 1
Souris 1
WPG Insect Contol 1

Mosquito Species

Mosquito Hosts n
Culex tarsalis 11

Contig Summary

Summary Stats for Partitivirus-like Culex mosquito virus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 12 1751 299.00 100.00 100.00 100.00

aa Identity Summary

Gouley virus

Gouley virus has a dsRNA genome and is a member of the family Totiviridae and was detected in 3 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 3

Locations

Location(s) Detected n
Brandon 1
Cypress River & Carberry 1
Shoal Lake, Virden & Souris 1

Mosquito Species

Mosquito Hosts n
Culex tarsalis 3

Contig Summary

Summary Stats for Gouley virus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 3 368 263.00 95.04 97.67 92.86

aa Identity Summary

Manitoba toti-like virus 1*

Manitoba toti-like virus 1* has a dsRNA genome and is a member of the family Totiviridae and was detected in 5 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 2
2021 3

Locations

Location(s) Detected n
Brandon 1
Cypress River 1
Shoal Lake 3

Mosquito Species

Mosquito Hosts n
Aedes vexans 2
Culex tarsalis 3

Contig Summary

Summary Stats for Manitoba toti-like virus 1*
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
2 5 8930 2,012.00 69.92 73.11 67.43

aa Identity Summary

Ballard Lake virus

Ballard Lake virus has a dsRNA genome and is a member of the family Birnaviridae and was detected in 26 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 10
2021 16

Locations

Location(s) Detected n
Boissevain 2
Brandon 4
Carberry 1
Cypress River 3
Cypress River & Carberry 1
Killarney 2
Newdale 1
Shoal Lake 5
Souris 2
Virden 2
Virden & Souris 1
WPG Insect Contol 2

Mosquito Species

Mosquito Hosts n
Aedes vexans 19
Coquillettidia perturbans 4
Culex tarsalis 2
Ochlerotatus dorsalis 1

Contig Summary

Summary Stats for Ballard Lake virus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
4 48 3472 707.00 99.86 100.00 93.27

aa Identity Summary

Manitoba toti-like virus 2*

Manitoba toti-like virus 2* has a dsRNA genome and is a member of the family Totiviridae and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2021 1

Locations

Location(s) Detected n
Brandon 1

Mosquito Species

Mosquito Hosts n
Aedes canadensis 1

Contig Summary

Summary Stats for Manitoba toti-like virus 2*
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 1 3123 3,123.00 60.24 60.24 60.24

aa Identity Summary

Hattula totivirus 1

Hattula totivirus 1 has a dsRNA genome and is a member of the family Totiviridae and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 1

Locations

Location(s) Detected n
Multiple 1

Mosquito Species

Mosquito Hosts n
Ochlerotatus triseriatus 1

Contig Summary

Summary Stats for Hattula totivirus 1
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 1 4909 4,909.00 89.07 89.07 89.07

aa Identity Summary

Manitoba toti-like virus 3*

Manitoba toti-like virus 3* has a dsRNA genome and is a member of the family Totiviridae and was detected in 4 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 4

Locations

Location(s) Detected n
Boissevain & Killarney 1
Brandon 1
Shoal Lake 1
Virden & Souris 1

Mosquito Species

Mosquito Hosts n
Ochlerotatus dorsalis 4

Contig Summary

Summary Stats for Manitoba toti-like virus 3*
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 4 4626 1,821.00 73.53 74.90 72.22

aa Identity Summary

Manitoba iridescent virus 1*

Manitoba iridescent virus 1* has a dsDNA genome and is a member of the family Iridoviridae and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2021 1

Locations

Location(s) Detected n
Cypress River 1

Mosquito Species

Mosquito Hosts n
Coquillettidia perturbans 1

Contig Summary

Summary Stats for Manitoba iridescent virus 1*
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 1 797 797.00 78.74 78.74 78.74

aa Identity Summary

Riverside virus 1

Riverside virus 1 has a -ssRNA genome and is a member of the family Rhabdoviridae and was detected in 15 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 6
2021 9

Locations

Location(s) Detected n
Boissevain 1
Brandon 2
Cypress River 1
Cypress River & Carberry 1
Killarney 1
Newdale 1
Shoal Lake 4
Souris 1
Virden 1
Virden & Souris 1
WPG Insect Contol 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 14
Ochlerotatus dorsalis 1

Contig Summary

Summary Stats for Riverside virus 1
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
2 17 8033 718.00 90.20 93.01 85.32

aa Identity Summary

Chuvirus

Chuvirus has a -ssRNA genome and is a member of the family Chuviridae and was detected in 21 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 9
2021 12

Locations

Location(s) Detected n
Boissevain 2
Boissevain & Killarney 1
Brandon 3
Carberry 2
Cypress River 1
Cypress River & Carberry 1
Killarney 1
Newdale 1
Shoal Lake 6
Souris 1
Virden 1
Virden & Souris 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 17
Culex tarsalis 1
Ochlerotatus dorsalis 3

Contig Summary

Summary Stats for Chuvirus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
3 39 6799 433.00 97.49 100.00 89.66

aa Identity Summary

Merida virus

Merida virus has a -ssRNA genome and is a member of the family Rhabdoviridae and was detected in 11 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 5
2021 6

Locations

Location(s) Detected n
Boissevain 1
Brandon 3
Carberry 1
Cypress River 1
Cypress River & Carberry 1
Shoal Lake 1
Shoal Lake, Virden & Souris 1
Souris 1
WPG Insect Contol 1

Mosquito Species

Mosquito Hosts n
Culex tarsalis 11

Contig Summary

Summary Stats for Merida virus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 55 7483 262.00 99.86 100.00 97.14

aa Identity Summary

Wuhan mosquito virus 6

Wuhan mosquito virus 6 has a -ssRNA genome and is a member of the family Orthomyxoviridae and was detected in 14 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 7
2021 7

Locations

Location(s) Detected n
Boissevain 1
Brandon 4
Carberry 1
Cypress River 1
Cypress River & Carberry 1
Shoal Lake 2
Shoal Lake, Virden & Souris 1
Souris 1
WPG Insect Contol 1
Western MB 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 2
Coquillettidia perturbans 1
Culex tarsalis 11

Contig Summary

Summary Stats for Wuhan mosquito virus 6
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
3 101 2467 252.00 99.76 100.00 97.69

aa Identity Summary

Manitoba rhabdovirus 3*

Manitoba rhabdovirus 3* has a -ssRNA genome and is a member of the family Rhabdoviridae and was detected in 5 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 1
2021 4

Locations

Location(s) Detected n
Brandon 2
Carberry 1
Cypress River & Carberry 1
Souris 1

Mosquito Species

Mosquito Hosts n
Aedes canadensis 1
Culex tarsalis 4

Contig Summary

Summary Stats for Manitoba rhabdovirus 3*
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
2 5 6071 587.00 80.94 84.85 66.04

aa Identity Summary

Flanders hapavirus

Flanders hapavirus has a -ssRNA genome and is a member of the family Rhabdoviridae and was detected in 13 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 5
2021 8

Locations

Location(s) Detected n
Boissevain 1
Brandon 3
Carberry 1
Cypress River 1
Cypress River & Carberry 1
Shoal Lake 3
Shoal Lake, Virden & Souris 1
Souris 1
WPG Insect Contol 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 3
Culex tarsalis 10

Contig Summary

Summary Stats for Flanders hapavirus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
2 81 8773 263.00 99.90 100.00 95.96

aa Identity Summary

Astopletus virus

Astopletus virus has a -ssRNA genome and is a member of the family Orthomyxoviridae and was detected in 11 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 5
2021 6

Locations

Location(s) Detected n
Boissevain 1
Brandon 3
Carberry 1
Cypress River 1
Cypress River & Carberry 1
Shoal Lake 1
Shoal Lake, Virden & Souris 1
Souris 1
WPG Insect Contol 1

Mosquito Species

Mosquito Hosts n
Culex tarsalis 11

Contig Summary

Summary Stats for Astopletus virus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 29 1044 464.00 99.06 100.00 95.77

aa Identity Summary

Elisy virus

Elisy virus has a -ssRNA genome and is a member of the family Rhabdoviridae and was detected in 5 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 3
2021 2

Locations

Location(s) Detected n
Brandon 3
Cypress River & Carberry 1
Shoal Lake 1

Mosquito Species

Mosquito Hosts n
Culex tarsalis 5

Contig Summary

Summary Stats for Elisy virus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 21 1817 373.00 99.27 100.00 96.41

aa Identity Summary

Culex Rhabdo-like virus

Culex Rhabdo-like virus has a -ssRNA genome and is a member of the family Rhabdoviridae and was detected in 3 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 1
2021 2

Locations

Location(s) Detected n
Brandon 1
Cypress River & Carberry 1
Shoal Lake 1

Mosquito Species

Mosquito Hosts n
Culex tarsalis 3

Contig Summary

Summary Stats for Culex Rhabdo-like virus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 4 1973 672.00 100.00 100.00 100.00

aa Identity Summary

Culex bunyavirus 2

Culex bunyavirus 2 has a -ssRNA genome and is a member of the family Peribunyaviridae and was detected in 11 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 5
2021 6

Locations

Location(s) Detected n
Boissevain 1
Brandon 3
Carberry 1
Cypress River 1
Cypress River & Carberry 1
Shoal Lake 1
Shoal Lake, Virden & Souris 1
Souris 1
WPG Insect Contol 1

Mosquito Species

Mosquito Hosts n
Culex tarsalis 11

Contig Summary

Summary Stats for Culex bunyavirus 2
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 19 1896 350.00 100.00 100.00 100.00

aa Identity Summary

Canya virus

Canya virus has a -ssRNA genome and is a member of the family Rhabdoviridae and was detected in 7 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 3
2021 4

Locations

Location(s) Detected n
Boissevain 1
Brandon 3
Cypress River 1
Shoal Lake 1
WPG Insect Contol 1

Mosquito Species

Mosquito Hosts n
Culex tarsalis 7

Contig Summary

Summary Stats for Canya virus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 9 2444 522.00 90.87 100.00 85.05

aa Identity Summary

Manitoba virus

Manitoba virus has a -ssRNA genome and is a member of the family Rhabdoviridae and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2021 1

Locations

Location(s) Detected n
Shoal Lake 1

Mosquito Species

Mosquito Hosts n
Culex tarsalis 1

Contig Summary

Summary Stats for Manitoba virus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 5 1589 500.00 99.76 100.00 98.80

aa Identity Summary

Culex rhabdovirus

Culex rhabdovirus has a -ssRNA genome and is a member of the family Rhabdoviridae and was detected in 2 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2021 2

Locations

Location(s) Detected n
Brandon 1
Cypress River 1

Mosquito Species

Mosquito Hosts n
Culex tarsalis 2

Contig Summary

Summary Stats for Culex rhabdovirus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 2 429 359.00 100.00 100.00 100.00

aa Identity Summary

Manitoba Rhabdovirus 1*

Manitoba Rhabdovirus 1* has a -ssRNA genome and is a member of the family Rhabdoviridae and was detected in 15 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 7
2021 8

Locations

Location(s) Detected n
Boissevain 1
Brandon 2
Carberry 1
Cypress River 1
Cypress River & Carberry 1
Killarney 2
Newdale 1
Shoal Lake 3
Souris 1
Virden 1
WPG Insect Contol 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 14
Ochlerotatus dorsalis 1

Contig Summary

Summary Stats for Manitoba Rhabdovirus 1*
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
2 20 5085 784.00 77.30 83.33 69.42

aa Identity Summary

Manitoba rhabdovirus 2*

Manitoba rhabdovirus 2* has a -ssRNA genome and is a member of the family Rhabdoviridae and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 1

Locations

Location(s) Detected n
Shoal Lake 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 1

Contig Summary

Summary Stats for Manitoba rhabdovirus 2*
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 1 4648 4,648.00 75.00 75.00 75.00

aa Identity Summary

Yongsan picorna-like virus 1

Yongsan picorna-like virus 1 has a +ssRNA genome and is a member of the family Iflaviridae and was detected in 21 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 10
2021 11

Locations

Location(s) Detected n
Boissevain 1
Boissevain & Killarney 1
Brandon 4
Carberry 1
Cypress River 1
Cypress River & Carberry 1
Killarney 2
Newdale 1
Shoal Lake 5
Souris 1
Virden 1
Virden & Souris 1
WPG Insect Contol 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 18
Ochlerotatus dorsalis 3

Contig Summary

Summary Stats for Yongsan picorna-like virus 1
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
2 64 4085 510.00 89.40 100.00 85.05

aa Identity Summary

Hanko iflavirus 1

Hanko iflavirus 1 has a +ssRNA genome and is a member of the family Iflaviridae and was detected in 12 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 8
2021 4

Locations

Location(s) Detected n
Boissevain & Killarney 1
Brandon 1
Cypress River 1
Newdale 1
Shoal Lake 4
Virden & Souris 1
WPG Insect Contol 3

Mosquito Species

Mosquito Hosts n
Aedes vexans 4
Coquillettidia perturbans 1
Culex tarsalis 1
Ochlerotatus dorsalis 5
Ochlerotatus flavescens 1

Contig Summary

Summary Stats for Hanko iflavirus 1
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
5 30 9246 308.00 97.49 100.00 93.45

aa Identity Summary

Pedersore iflavirus

Pedersore iflavirus has a +ssRNA genome and is a member of the family Iflaviridae and was detected in 17 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 16
2021 1

Locations

Location(s) Detected n
Boissevain & Killarney 1
Brandon 5
Cypress River & Carberry 2
Killarney 1
Shoal Lake 4
Virden & Souris 1
WPG Insect Contol 2
Western MB 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 7
Coquillettidia perturbans 2
Culex tarsalis 3
Ochlerotatus dorsalis 4
Ochlerotatus flavescens 1

Contig Summary

Summary Stats for Pedersore iflavirus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
5 25 9899 286.00 93.47 100.00 89.14

aa Identity Summary

Marma virus

Marma virus has a +ssRNA genome and is a member of the family Luteoviridae and was detected in 12 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 6
2021 6

Locations

Location(s) Detected n
Boissevain 1
Brandon 3
Carberry 1
Cypress River 1
Cypress River & Carberry 1
Shoal Lake 1
Shoal Lake, Virden & Souris 1
Souris 1
WPG Insect Contol 1
Western MB 1

Mosquito Species

Mosquito Hosts n
Coquillettidia perturbans 1
Culex tarsalis 11

Contig Summary

Summary Stats for Marma virus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
2 23 3160 1,574.00 100.00 100.00 100.00

aa Identity Summary

Culex iflavilike virus 3

Culex iflavilike virus 3 has a +ssRNA genome and is a member of the family Iflaviridae and was detected in 11 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 5
2021 6

Locations

Location(s) Detected n
Boissevain 1
Brandon 3
Carberry 1
Cypress River 1
Cypress River & Carberry 1
Shoal Lake 1
Shoal Lake, Virden & Souris 1
Souris 1
WPG Insect Contol 1

Mosquito Species

Mosquito Hosts n
Culex tarsalis 11

Contig Summary

Summary Stats for Culex iflavilike virus 3
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 183 1824 250.00 99.49 100.00 94.19

aa Identity Summary

Placeda virus

Placeda virus has a +ssRNA genome and is a member of the family Flaviviridae and was detected in 13 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 6
2021 7

Locations

Location(s) Detected n
Boissevain 1
Brandon 4
Carberry 1
Cypress River 1
Cypress River & Carberry 1
Shoal Lake 2
Shoal Lake, Virden & Souris 1
Souris 1
WPG Insect Contol 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 2
Culex tarsalis 11

Contig Summary

Summary Stats for Placeda virus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
2 169 11737 252.00 97.87 100.00 86.24

aa Identity Summary

Culex Iflavi-like virus 4

Culex Iflavi-like virus 4 has a +ssRNA genome and is a member of the family Iflaviridae and was detected in 7 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 4
2021 3

Locations

Location(s) Detected n
Boissevain 1
Brandon 3
Carberry 1
Cypress River & Carberry 1
Shoal Lake, Virden & Souris 1

Mosquito Species

Mosquito Hosts n
Culex tarsalis 7

Contig Summary

Summary Stats for Culex Iflavi-like virus 4
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 23 9811 285.00 99.81 100.00 96.20

aa Identity Summary

Hubei mosquito virus 4

Hubei mosquito virus 4 has a +ssRNA genome and is a member of the family Tombusviridae and was detected in 6 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 3
2021 3

Locations

Location(s) Detected n
Boissevain 1
Brandon 3
Carberry 1
Cypress River & Carberry 1

Mosquito Species

Mosquito Hosts n
Culex tarsalis 6

Contig Summary

Summary Stats for Hubei mosquito virus 4
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 6 5103 367.00 96.50 100.00 92.65

aa Identity Summary

Hubei virga-like virus 2

Hubei virga-like virus 2 has a +ssRNA genome and is a member of the family Virgaviridae and was detected in 4 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 3
2021 1

Locations

Location(s) Detected n
Brandon 2
Cypress River & Carberry 1
Souris 1

Mosquito Species

Mosquito Hosts n
Culex tarsalis 4

Contig Summary

Summary Stats for Hubei virga-like virus 2
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 6 947 290.00 99.04 100.00 96.27

aa Identity Summary

Des Moines River virus

Des Moines River virus has a +ssRNA genome and is a member of the family Tombusviridae and was detected in 4 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 4

Locations

Location(s) Detected n
Brandon 3
WPG Insect Contol 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 1
Culex tarsalis 3

Contig Summary

Summary Stats for Des Moines River virus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
2 4 2361 1,070.00 100.00 100.00 100.00

aa Identity Summary

Manitoba dicistro-like virus 1*

Manitoba dicistro-like virus 1* has a +ssRNA genome and is a member of the family Dicistroviridae and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 1

Locations

Location(s) Detected n
Brandon 1

Mosquito Species

Mosquito Hosts n
Culex tarsalis 1

Contig Summary

Summary Stats for Manitoba dicistro-like virus 1*
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 1 7146 7,146.00 82.61 82.61 82.61

aa Identity Summary

Soybean thrips dicistrovirus

Soybean thrips dicistrovirus has a +ssRNA genome and is a member of the family Dicistroviridae and was detected in 9 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 3
2021 6

Locations

Location(s) Detected n
Boissevain 2
Brandon 1
Carberry 1
Newdale 1
Shoal Lake 2
Souris 1
WPG Insect Contol 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 3
Culex tarsalis 5
Ochlerotatus dorsalis 1

Contig Summary

Summary Stats for Soybean thrips dicistrovirus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
3 11 9121 893.00 100.00 100.00 100.00

aa Identity Summary

Yongsan picorna-like virus 2

Yongsan picorna-like virus 2 has a +ssRNA genome and is a member of the family Iflaviridae and was detected in 3 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 1
2021 2

Locations

Location(s) Detected n
Brandon 2
Shoal Lake 1

Mosquito Species

Mosquito Hosts n
Culex tarsalis 3

Contig Summary

Summary Stats for Yongsan picorna-like virus 2
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 4 9573 2,367.00 100.00 100.00 100.00

aa Identity Summary

Manitoba tombus-like virus 1*

Manitoba tombus-like virus 1* has a +ssRNA genome and is a member of the family Tombusviridae and was detected in 5 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 3
2021 2

Locations

Location(s) Detected n
Brandon 2
Shoal Lake 1
Souris 1
WPG Insect Contol 1

Mosquito Species

Mosquito Hosts n
Culex tarsalis 5

Contig Summary

Summary Stats for Manitoba tombus-like virus 1*
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 5 2340 1,687.00 75.68 76.92 72.73

aa Identity Summary

Culex narnavirus 1

Culex narnavirus 1 has a +ssRNA genome and is a member of the family Narnaviridae and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 1

Locations

Location(s) Detected n
Brandon 1

Mosquito Species

Mosquito Hosts n
Culex tarsalis 1

Contig Summary

Summary Stats for Culex narnavirus 1
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 1 513 513.00 100.00 100.00 100.00

aa Identity Summary

Hubei noda-like virus 12

Hubei noda-like virus 12 has a +ssRNA genome and is a member of the family Nodaviridae and was detected in 2 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2021 2

Locations

Location(s) Detected n
Carberry 1
Virden 1

Mosquito Species

Mosquito Hosts n
Coquillettidia perturbans 1
Culex tarsalis 1

Contig Summary

Summary Stats for Hubei noda-like virus 12
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
2 2 4762 841.00 95.83 100.00 91.67

aa Identity Summary

Manitoba mononega-like virus 1*

Manitoba mononega-like virus 1* has a +ssRNA genome and is a member of the family Negevirus and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2021 1

Locations

Location(s) Detected n
Brandon 1

Mosquito Species

Mosquito Hosts n
Aedes canadensis 1

Contig Summary

Summary Stats for Manitoba mononega-like virus 1*
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 1 11180 11,180.00 73.21 73.21 73.21

aa Identity Summary

Bro virus

Bro virus has a +ssRNA genome and is a member of the family Negevirus and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2021 1

Locations

Location(s) Detected n
Brandon 1

Mosquito Species

Mosquito Hosts n
Aedes canadensis 1

Contig Summary

Summary Stats for Bro virus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 1 11375 11,375.00 90.00 90.00 90.00

aa Identity Summary

Manitoba mononega-like virus 2*

Manitoba mononega-like virus 2* has a +ssRNA genome and is a member of the family Negevirus and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2021 1

Locations

Location(s) Detected n
Brandon 1

Mosquito Species

Mosquito Hosts n
Aedes canadensis 1

Contig Summary

Summary Stats for Manitoba mononega-like virus 2*
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 1 2477 2,477.00 75.00 75.00 75.00

aa Identity Summary

Hubei macula-like virus 3

Hubei macula-like virus 3 has a +ssRNA genome and is a member of the family Tymoviridae and was detected in 5 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 4
2021 1

Locations

Location(s) Detected n
Brandon 2
Shoal Lake 2
Virden & Souris 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 4
Ochlerotatus dorsalis 1

Contig Summary

Summary Stats for Hubei macula-like virus 3
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
2 8 6059 2,954.00 96.13 100.00 92.15

aa Identity Summary

Hanko iflavirus 2

Hanko iflavirus 2 has a +ssRNA genome and is a member of the family Iflaviridae and was detected in 13 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 9
2021 4

Locations

Location(s) Detected n
Boissevain 1
Brandon 3
Cypress River & Carberry 1
Killarney 1
Shoal Lake 4
Souris 1
Virden & Souris 1
WPG Insect Contol 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 11
Coquillettidia perturbans 1
Ochlerotatus dorsalis 1

Contig Summary

Summary Stats for Hanko iflavirus 2
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
3 16 9206 461.00 97.05 100.00 89.58

aa Identity Summary

Black queen cell virus

Black queen cell virus has a +ssRNA genome and is a member of the family Dicistroviridae and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 1

Locations

Location(s) Detected n
Brandon 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 1

Contig Summary

Summary Stats for Black queen cell virus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 2 6035 2,087.00 100.00 100.00 100.00

aa Identity Summary

Manitoba picorna-like virus 1*

Manitoba picorna-like virus 1* has a +ssRNA genome and is a member of the family Iflaviridae and was detected in 12 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 7
2021 5

Locations

Location(s) Detected n
Boissevain 2
Brandon 2
Cypress River & Carberry 1
Killarney 2
Newdale 1
Shoal Lake 3
Virden & Souris 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 12

Contig Summary

Summary Stats for Manitoba picorna-like virus 1*
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 20 2114 573.00 81.99 84.96 73.93

aa Identity Summary

Cordoba virus

Cordoba virus has a +ssRNA genome and is a member of the family Negevirus and was detected in 3 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2021 3

Locations

Location(s) Detected n
Boissevain 1
Cypress River 1
Souris 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 3

Contig Summary

Summary Stats for Cordoba virus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 14 5133 610.00 97.10 100.00 93.75

aa Identity Summary

Mekrijarvi Negevirus

Mekrijarvi Negevirus has a +ssRNA genome and is a member of the family Negevirus and was detected in 6 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 2
2021 4

Locations

Location(s) Detected n
Boissevain 1
Boissevain & Killarney 1
Cypress River 1
Shoal Lake 1
Souris 1
Virden & Souris 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 3
Ochlerotatus dorsalis 3

Contig Summary

Summary Stats for Mekrijarvi Negevirus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
2 6 9873 3,125.00 94.13 100.00 90.78

aa Identity Summary

Big Cypress virus

Big Cypress virus has a +ssRNA genome and is a member of the family Negevirus and was detected in 3 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 1
2021 2

Locations

Location(s) Detected n
Boissevain 1
Brandon 1
Souris 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 3

Contig Summary

Summary Stats for Big Cypress virus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 3 9570 2,735.00 98.77 100.00 96.30

aa Identity Summary

Manitoba mononega-like virus 3*

Manitoba mononega-like virus 3* has a +ssRNA genome and is a member of the family Negevirus and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 1

Locations

Location(s) Detected n
Multiple 1

Mosquito Species

Mosquito Hosts n
Ochlerotatus triseriatus 1

Contig Summary

Summary Stats for Manitoba mononega-like virus 3*
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 1 5456 5,456.00 78.57 78.57 78.57

aa Identity Summary

Manitoba iflavirus 1*

Manitoba iflavirus 1* has a +ssRNA genome and is a member of the family Iflaviridae and was detected in 10 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 5
2021 5

Locations

Location(s) Detected n
Boissevain 1
Brandon 1
Killarney 1
Newdale 1
Shoal Lake 3
Souris 1
Virden 1
WPG Insect Contol 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 9
Ochlerotatus dorsalis 1

Contig Summary

Summary Stats for Manitoba iflavirus 1*
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
2 13 2435 573.00 78.42 83.54 67.08

aa Identity Summary

Tiger mosquito bi-segmented tombus-like virus

Tiger mosquito bi-segmented tombus-like virus has a +ssRNA genome and is a member of the family Tombusviridae and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2021 1

Locations

Location(s) Detected n
Souris 1

Mosquito Species

Mosquito Hosts n
Culex tarsalis 1

Contig Summary

Summary Stats for Tiger mosquito bi-segmented tombus-like virus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 1 2351 2,351.00 100.00 100.00 100.00

aa Identity Summary

Hubei arthropod virus 1

Hubei arthropod virus 1 has a +ssRNA genome and is a member of the family Iflaviridae and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2021 1

Locations

Location(s) Detected n
Shoal Lake 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 1

Contig Summary

Summary Stats for Hubei arthropod virus 1
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 1 2967 2,967.00 100.00 100.00 100.00

aa Identity Summary

Thrace picorna-like virus 1

Thrace picorna-like virus 1 has a +ssRNA genome and is a member of the family Iflaviridae and was detected in 2 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2021 2

Locations

Location(s) Detected n
Cypress River 1
Newdale 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 2

Contig Summary

Summary Stats for Thrace picorna-like virus 1
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 2 1172 1,115.00 91.62 93.65 89.58

aa Identity Summary

Soybean thrips iflavirus 4

Soybean thrips iflavirus 4 has a +ssRNA genome and is a member of the family Iflaviridae and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 1

Locations

Location(s) Detected n
WPG Insect Contol 1

Mosquito Species

Mosquito Hosts n
Coquillettidia perturbans 1

Contig Summary

Summary Stats for Soybean thrips iflavirus 4
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 1 3835 3,835.00 100.00 100.00 100.00

aa Identity Summary

Cafluga virus

Cafluga virus has a +ssRNA genome and is a member of the family Iflaviridae and was detected in 2 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 2

Locations

Location(s) Detected n
Boissevain & Killarney 1
WPG Insect Contol 1

Mosquito Species

Mosquito Hosts n
Coquillettidia perturbans 1
Ochlerotatus dorsalis 1

Contig Summary

Summary Stats for Cafluga virus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
2 2 3426 1,395.00 99.77 100.00 99.55

aa Identity Summary

Manitoba tymo-like virus 1*

Manitoba tymo-like virus 1* has a +ssRNA genome and is a member of the family Tymoviridae and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2021 1

Locations

Location(s) Detected n
Boissevain 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 1

Contig Summary

Summary Stats for Manitoba tymo-like virus 1*
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 1 6302 6,302.00 66.79 66.79 66.79

aa Identity Summary

Utsjoki negevirus 3

Utsjoki negevirus 3 has a +ssRNA genome and is a member of the family Negevirus and was detected in 2 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 2

Locations

Location(s) Detected n
Shoal Lake 1
Virden & Souris 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 2

Contig Summary

Summary Stats for Utsjoki negevirus 3
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 2 989 972.00 99.02 99.03 99.01

aa Identity Summary

Inari jingmenvirus

Inari jingmenvirus has a +ssRNA genome and is a member of the family Flaviviridae and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 1

Locations

Location(s) Detected n
Shoal Lake 1

Mosquito Species

Mosquito Hosts n
Aedes vexans 1

Contig Summary

Summary Stats for Inari jingmenvirus
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 1 1267 1,267.00 100.00 100.00 100.00

aa Identity Summary

Manitoba virgavirus 1*

Manitoba virgavirus 1* has a +ssRNA genome and is a member of the family Virgaviridae and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2020 1

Locations

Location(s) Detected n
Shoal Lake 1

Mosquito Species

Mosquito Hosts n
Ochlerotatus dorsalis 1

Contig Summary

Summary Stats for Manitoba virgavirus 1*
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 1 1675 1,675.00 83.83 83.83 83.83

aa Identity Summary

Manitoba narnavirus 1*

Manitoba narnavirus 1* has a +ssRNA genome and is a member of the family Narnaviridae and was detected in 1 sample(s). See summary figures and tables below.

Years

Year(s) Detected n
2021 1

Locations

Location(s) Detected n
Shoal Lake 1

Mosquito Species

Mosquito Hosts n
Anopheles earlei 1

Contig Summary

Summary Stats for Manitoba narnavirus 1*
n Species n Contigs Max Contig Min Contig Average aa Id Max aa Id Min aa Id
1 2 1760 654.00 80.59 80.89 80.29

aa Identity Summary

LS0tDQp0aXRsZTogIk1vc3F1aXRvIE1ldGFnZW5vbWljcyBTdW1tYXJ5Ig0KYXV0aG9yOiAiQ29sZSBCYXJpbCINCmRhdGU6ICJgciBTeXMuRGF0ZSgpYCINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiB0cnVlDQogICAgdG9jX2Zsb2F0OiB0cnVlDQogICAgdGhlbWU6IGNvc21vDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KICAgIGNvZGVfZm9sZGluZzogc2hvdw0KLS0tDQoNCmBgYHtjc3MgdG9jLWNvbnRlbnQsIGVjaG8gPSBGQUxTRX0NCiNUT0Mgew0KICBsZWZ0OiAyNXB4Ow0KICBtYXJnaW46IDI1cHggMHB4IDI1cHggMHB4Ow0KfQ0KDQoubWFpbi1jb250YWluZXIgew0KICAgIG1hcmdpbi1sZWZ0OiA1MHB4Ow0KfQ0KYGBgDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLCBtZXNzYWdlID0gRkFMU0UsIHdhcm5pbmdzID0gRkFMU0UpDQpgYGANCg0KYGBgez1odG1sfQ0KPHN0eWxlPg0KICAgdGFibGUgew0KICAgICBkaXNwbGF5OiBibG9jazsNCiAgICAgb3ZlcmZsb3c6IGF1dG87DQogICB9DQoNCiAgIGJsb2NrcXVvdGUgew0KICAgYmFja2dyb3VuZC1jb2xvcjogIzMzNjM4ZGZmOw0KICAgY29sb3I6d2hpdGU7DQogIH0NCg0KIDwvc3R5bGU+DQpgYGANCg0KIyBMaW5rcyB0byBGaWxlcw0KDQpTb21lIGZpbGVzIGdlbmVyYXRlZCBhcmUgdG9vIGxhcmdlIHRvIHN0b3JlIG9uIEdpdEh1YiAoZS5nLiwgY29udGlnIHNlcXVlbmNlcywgcHVibGljYXRpb24tcXVhbGl0eSBpbWFnZXMpLiBMYXJnZSBmaWxlcyBjYW4gYmUgYWNjZXNzZWQgZnJvbSBEcm9wQm94IGZvbGRlcnMgYmVsb3c6DQoNCltEcm9wYm94IGxpbmsgdG8gcmF3IGFzc2VtYmxpZXMgc2VwYXJhdGVkIGJ5IHNhbXBsZV0oaHR0cHM6Ly93d3cuZHJvcGJveC5jb20vcy9tMTk0YXVrN294bHBud2EvQ29udGlncy56aXA/ZGw9MCkNCg0KW0Ryb3Bib3ggbGluayB0byByYXcgYXNzZW1ibGllcyBjb25jYXRlbmF0ZWQgaW50byBhIC5jc3ZdKGh0dHBzOi8vd3d3LmRyb3Bib3guY29tL3MvcHBlODNsOGxidmR6MjYyL2NvbnRpZ3NfcmF3LnppcD9kbD0wKQ0KDQpbRHJvcGJveCBsaW5rIHRvIHB1YmxpY2F0aW9uIHF1YWxpdHkgZmlndXJlc10oaHR0cHM6Ly93d3cuZHJvcGJveC5jb20vc2gvMmx3NzR4ZGFwMm9meHRiL0FBQUNUTUlVLWlwdmQwR2dLVkd4dXpqbWE/ZGw9MCkNCg0KUmF3IFJOQSBzZXF1ZW5jaW5nIHJlYWRzIGNhbiBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgTkNCSSBzaG9ydCBzZXF1ZW5jZSByZWFkIGFyY2hpdmUgdW5kZXIgdGhlIFNSQSBhY2Nlc3Npb24gbnVtYmVyIFBSSk5BNzkzMjQ3Lg0KDQoNCiMgUmUtQkxBU1QgMjAyMw0KDQpEdWUgdG8gdGhlIHNpZ25pZmljYW50IGNoYW5nZXMgdG8gR2VuQmFuayB3ZSBhcmUgcmUtQkxBU1RpbmcgcmVzdWx0cy4gVG8gc3BlZWQgdGhpbmdzIHVwLCBJIGFtIGN1cmF0aW5nIGN1c3RvbSBCTEFTVCBkYXRhYmFzZXMgdXNpbmcgc2VxdWVuY2VzIGRvd25sb2FkZWQgZnJvbSBHZW5CYW5rJ3MgTnVjbGVvdGlkZSBkYXRhYmFzZSB1c2luZyBFbnRyZXogUXVlcmllcyB0byBlbGltaW5hdGUgc2VxdWVuY2VzIHRoYXQgYXJlIGV4dHJlbWVseSB1bmxpa2VseSB0byBiZSBwcmVzZW50IGluIG91ciBzYW1wbGVzIHRoYXQgbWFrZSB1cCBhIGxhcmdlIHBvcnRpb24gb2YgdGhlIE51Y2xlb3RpZGUgZGF0YWJhc2UuIEJMQVNUIGlzIGJlaW5nIHJ1biBsb2NhbGx5IHVzaW5nIENMQyBHZW5vbWljcyBXb3JrYmVuY2guIEkgYW0gQkxBU1RpbmcgYnkgdGF4b24gY2F0ZWdvcmllcyAoZS5nLiwgdmlydXNlcywgZnVuZ2ksIHBhcmFzaXRlcykgYXMgd2UgYXJlIGxpbWl0ZWQgYnkgY29tcHV0YXRpb25hbCBhdmFpbGFiaWxpdHkuIEZvciBleGFtcGxlLCBlbGltaW5hdGluZyB0aGUgdG9wIGZldyB2aXJ1c2VzICh1bmxpa2VseSB0byBiZSBmb3VuZCBpbiBtb3NxdWl0b2VzKSBpbiB0aGUgbnVjbGVvdGlkZSBkYXRhYmFzZSByZWR1Y2VzIHRoZSBudW1iZXIgb2Ygc2VxdWVuY2VzIGJ5IDkwJS4gDQoNCiMjIFZpcnVzZXMNCg0KKipFbnRyZXogUXVlcnk6KioNCg0KVmlydXNlcyBbT1JHTl0gTk9UIENvcm9uYXZpcnVzIFtPUkdOXSBOT1QgSHVtYW4gaW1tdW5vZGVmaWNpZW5jeSB2aXJ1cyAxIFtPUkdOXSBOT1QgSW5mbHVlbnphIEEgdmlydXMgW09SR05dIE5PVCBIZXBhY2l2aXJ1cyBDIFtPUkdOXSBOT1QgSGVwYXRpdGlzIEIgdmlydXMgW09SR05dIE5PVCBJbmZsdWVuemEgQiB2aXJ1cyBbT1JHTl0gTk9UIFJvdGF2aXJ1cyBBIFtPUkdOXSBOT1QgTm9yd2FsayB2aXJ1cyBbT1JHTl0gTk9UIFNpbWlhbiBpbW11bm9kZWZpY2llbmN5IHZpcnVzIFtPUkdOXSANCg0KIyMgUmUtQkxBU1QgMjAyMyBTdGVwcw0KDQoxLiBDb25jYXRlbmF0ZSBhbGwgcmVhZCBtYXBwaW5nIGRhdGEgYW5kIGNvbnRpZ3M6IGAwMSAtIE1hcHBpbmdzICYgQ29udGlncy5SYA0KMi4gUmUtQkxBU1QgYWxsIGNvbnRpZyBzZXF1ZW5jZXMgYWdhaW5zdCBsb2NhbCBOQ0JJIHZpcnVzIGJsYXN0IChjdXJhdGVkIHZpYSBhYm92ZSBFbnRyZXogUXVlcnkpIHVzaW5nIENMQw0KMy4gUmVhZCBsb2NhbCBCTEFTVCByZXN1bHRzIGFuZCBmaWx0ZXIgcmVzdWx0czogYDAyIC0gUmVhZCBOdCBMb2NhbCBCTEFTVC5SYA0KNC4gQkxBU1QgYWxsIGNvbnRpZyBzZXF1ZW5jZXMgcGFzc2luZyBmaWx0ZXJzIGF0IE5DQkkgYWdhaW5zdCBhbGwgb3JnYW5pc21zIHRvIGVsaW1pbmF0ZSBmYWxzZSBwb3NpdGl2ZXMgdXNpbmcgQ0xDDQo1LiBSZWFkIEJMQVNUIGF0IE5DQkkgcmVzdWx0cyBhbmQgZmlsdGVyIG91dCBub24tdmlydXMgc2VxdWVuY2VzOiBgMDMgLSBCTEFTVCBhdCBOQ0JJLlJgDQo2LiB0QkxBU1R4IG9uIGNvbnRpZyBzZXF1ZW5jZXMgcGFzc2luZyBmaWx0ZXJzIGZyb20gc3RlcCB1c2luZyBsb2NhbCBkYXRhYmFzZSBvbiBDTEMgdG8gZGV0ZXJtaW5lIGFhIGlkZW50aXRlcw0KNy4gUmVhZCB0QkxBU1R4IHJlc3VsdHMgYW5kIGZpbHRlcjogYDA0IC0gdEJMQVNUeC5SYA0KDQojIE5vbi1WaXJ1cyBTZXF1ZW5jZXMNCg0KTm9uLXZpcnVzIHNlcXVlbmNlcyAoZS5nLiwgRnVuZ2ksIHBhcmFzaXRlcywgYmFjdGVyaWEsIHBsYW50cywgdmVydGVicmF0ZXMpIHdlcmUgY29uc2lkZXJhYmx5IGxvd2VyIGluIG92ZXJhbGwgbnVtYmVyIGFzIHdlbGwgYXMgcXVhbGl0eS4gRnVydGhlcm1vcmUsIGZvciB0aGVzZSByZWFzb25zLCBpdCB3YXMgZGlmZmljdWx0IHRvIGRpc2Nlcm4gc3BlY2llcyBmcm9tIHRoZSByZWNvdmVyZWQgc2VxdWVuY2VzLiBTb21lIG9mIHRoZSByZWFzb25zIGZvciB0aGlzIGlzIHRoYXQgY29tcGFyZWQgdG8gdmlydXNlcyB3aGVyZSBvZnRlbiB3ZSByZWNvdmVyZWQgdGhlIG5lYXIgY29tcGxldGUgZ2Vub21lLCBmb3IgZnVuZ2ksIHBhcmFzaXRlcywgYmFjdGVyaWEsIHBsYW50cyBhbmQgdmVydGVicmF0ZXMgd2UgcmVjb3ZlcmVkIG1vc3RseSByUk5BLCBtaXRvY2hvbmRyaWFsIHNlcXVlbmNlcywgb3IgaW4gdGhlIGNhc2Ugb2YgcGxhbnRzLCBjaGxvcm9wbGFzdCBzZXF1ZW5jZXMuIFRoZXJlZm9yZSwgd2UgZGVjaWRlZCB0byBjb25kdWN0IGFuYWx5c2VzIGZvciBub24tdmlydXMgc2VxdWVuY2VzIHJlY292ZXJlZCBhdCBhIGhpZ2hlciBsZXZlbCAoZS5nLiwgRmFtaWx5LCBHZW51cykgcmF0aGVyIHRoYW4gc3BlY2llcy4gVGhpcyBzdGlsbCBnaXZlcyB1cyBhIGdvb2QgaWRlYSBhYm91dCB3aGF0IG9yZ2FuaXNtcyBhcmUgaGFyYm91cmVkIGJ5IG1vc3F1aXRvZXMuIA0KDQojIE1ldGhvZHMNCg0KIyMgSG9zdCBhbmQgUXVhbGl0eSBGaWx0ZXJpbmcNCg0KQ2hhbiBadWNrZXJiZXJnIElEIE1ldGFnZW5vbWljIFBpcGVsaW5lIHY2LjggKENoYW4gWnVja2VyYmVyZyBCaW9odWI7IENaSUQpLCBhbiBvcGVuLXNvdXJjZWQgY2xvdWQtYmFzZWQgYmlvaW5mb3JtYXRpY3MgcGxhdGZvcm0gKGh0dHBzOi8vY3ppZC5vcmcvKSB3YXMgdXNlZCBmb3IgcXVhbGl0eSBjb250cm9sIGFuZCBob3N0IGZpbHRyYXRpb24gb2YgcmVhZHMgYXMgd2VsbCBhcyBkZSBub3ZvIGFzc2VtYmx5IGFuZCB0YXhvbm9taWMgYmlubmluZyBhcyBkZXNjcmliZWQgYnkgQmF0c29uIGV0IGFsLiwgKDIwMjEpIGFuZCBLYWxhbnRhciBldCBhbC4sICgyMDIwKS4gVGhlIENaSUQgcGlwZWxpbmUgZW1wbG95cyBTVEFSIGFuZCBCb3d0aWUyIHRvIHBlcmZvcm0gaG9zdCBmaWx0cmF0aW9uIChodW1hbiBhbmQgbW9zcXVpdG8pLCBUcmltbW9tYXRpYyBmb3IgYWRhcHRlciB0cmltbWluZywgUHJpY2UgU2VxIGZvciByZW1vdmFsIG9mIGxvdy1xdWFsaXR5IHJlYWRzLCBMWlcgZm9yIHRoZSByZW1vdmFsIG9mIGxvdyBjb21wbGV4aXR5IHJlYWRzIGFuZCBDWklEZGVkdXAgZm9yIGR1cGxpY2F0ZSByZWFkIGlkZW50aWZpY2F0aW9uLg0KDQojIyAqRGUgTm92byogQXNzZW1ibHkNCg0KVGhlIGhvc3QgYW5kIHF1YWxpdHkgZmlsdGVyZWQgcmVhZHMgd2VyZSBhbGxvd2VkIHRvIGNvbnRpbnVlIHRocm91Z2ggdGhlIENaSUQgcGlwZWxpbmUsIHdoaWNoIGludm9sdmVzIGRlIG5vdm8gYXNzZW1ibHkgd2l0aCBTUEFERVMgdXNpbmcgZGVmYXVsdCBzZXR0aW5ncyBhbmQgb25seSB0aGUgYXNzZW1ibHkgbW9kdWxlLiBBZnRlciBhc3NlbWJseSwgcmVhZHMgYXJlIG1hcHBlZCBiYWNrIHRvIGNvbnRpZ3Mgd2l0aCBCb3d0aWUyLiBUaGUgaG9zdCBhbmQgcXVhbGl0eSBmaWx0ZXJlZCByZWFkcyBmcm9tIENaSUQgKHRoZSBCb3d0aWUyIG91dHB1dCkgd2VyZSBkb3dubG9hZGVkIGFuZCBhc3NlbWJsZWQgd2l0aCB0aGUgQ0xDIEdlbm9taWNzIFdvcmtiZW5jaCB2ZXJzaW9uIDIwIGFzc2VtYmxlciB3aXRoIGEgbWluaW11bSBjb250aWcgbGVuZ3RoIG9mIDI1MCBudCwgbWlzbWF0Y2ggY29zdCBvZiAyLCBpbnNlcnRpb24gY29zdCBvZiAzLCBkZWxldGlvbiBjb3N0IG9mIDMsIGxlbmd0aCBmcmFjdGlvbiBvZiAwLjcgYW5kIGEgc2ltaWxhcml0eSBmcmFjdGlvbiBvZiAwLjk1LiBDb250aWdzIHdlcmUgc3ViamVjdCB0byBCTEFTVG4gYW5kIHRCTEFTVHggc2VhcmNoZXMgb24gYSBjdXN0b20gTkNCSSB2aXJ1c2VzIGRhdGFiYXNlIHVzaW5nIHRoZSBhYm92ZSBFbnRyZXogUXVlcnkgYW5kIHRoZSBOQ0JJIG50IGRhdGFiYXNlLiBUaGUgQkxBU1QgcmVzdWx0cyB3ZXJlIHZlcnkgc2ltaWxhciBiZXR3ZWVuIENaSUQgYW5kIENMQywgdGh1cyB3ZSBvcHRlZCB0byB1c2UgQ0xDIEdlbm9taWNzIFdvcmtiZW5jaCB2ZXJzaW9uIDIwIGZvciBzdWJzZXF1ZW50IGFuYWx5c2VzLg0KDQojIyBCTEFTVA0KDQpBc3NlbWJsZWQgY29udGlncyB3ZXJlIHN1YmplY3QgdG8gQkxBU1RuIHNlYXJjaGVzIG9uIHRoZSBOQ0JJIG5vbi1yZWR1bmRhbnQgbnVjbGVvdGlkZSBkYXRhYmFzZSwgYW5kIGNvbnRpZ3Mgd2VyZSBhc3NpZ25lZCB0byB0YXhhIGJhc2VkIG9uIEJMQVNUIHJlc3VsdHMuIFBvc2l0aXZlIGNvbnRpZ3MgZnJvbSBCTEFTVG4gd2VyZSBzdWJqZWN0IHRvIHRCTEFTVHggdG8gaWRlbnRpZnkgYW1pbm8gYWNpZCBpZGVudGl0aWVzLiBXZSB3ZXJlIGxvb2tpbmcgZm9yIG5vbi1tb3NxdWl0byBzZXF1ZW5jZXMgb2YgdmlyYWwsIGJhY3RlcmlhbCwgcGFyYXNpdGljLCBmdW5nYWwgYW5kIHBsYW50IG9yaWdpbiBhbmQgZGlzY2FyZGVkIHNlcXVlbmNlcyB0aGF0IHdlcmUgb2YgbW9zcXVpdG8gb3JpZ2luLg0KDQpUbyBiZWdpbiwgQkxBU1RuIHNlYXJjaCByZXN1bHRzIHdlcmUgZmlsdGVyZWQgYnkgRS12YWx1ZSAo4omkMXggMTA8c3VwPi0xMDA8L3N1cD4pIGFuZCBjb250aWcgbGVuZ3RoICjiiaUyNTApLiBDb250aWdzIHdpdGggYSBtYXRjaCBsZW5ndGggb2Yg4omlMjUwIG50LCDiiaU5MCUgZm9yIGJvdGggbnQgYW5kIGFhIHNlcXVlbmNlIHNpbWlsYXJpdHkgd2VyZSBjbGFzc2lmaWVkIGFzIGhpdHMuIENvdmVyYWdlIGRlcHRoIHdhcyBhbmFseXplZCBvbiBhIHBlci1zZXF1ZW5jZSBiYXNpczogZm9yIHZpcnVzZXMsIHdlIHVzZWQgYSBtaW5pbXVtIHRocmVzaG9sZCBvZiAxMFggY292ZXJhZ2UgZGVwdGgsIGFuZCB3ZSB3ZXJlIGxlc3Mgc3RyaWN0IGZvciBwcm90b3pvYW4sIGZ1bmdhbCwgYmFjdGVyaWFsLCBwbGFudCBhbmQgY2hvcmRhdGUgY292ZXJhZ2UuIEZvciB2aXJ1cyBoaXRzLCBjb250aWdzIG1lZXRpbmcgdGhlc2UgY3JpdGVyaWEgd2VyZSBzdWJqZWN0IHRvIHRCTEFTVHggc2VhcmNoZXMgdG8gaWRlbnRpZnkgYW1pbm8gYWNpZCBpZGVudGl0aWVzLg0KDQpDb250aWdzIG9mIHZpcmFsIG9yaWdpbiB3aXRoIGEgcGVyY2VudCBudCBpZGVudGl0eSA8ODUlIHdlcmUgZmxhZ2dlZCBhcyBwb3RlbnRpYWxseSBub3ZlbCB2aXJ1c2VzLiBXaGlsZSB0aGUgSUNUViBzZXRzIHNwZWNpZmljIHN0YW5kYXJkcyBmb3IgZGlmZmVyZW50IHZpcmFsIHRheGEgZm9yIHBlcmNlbnQgaWRlbnRpdHkgdG8gY2xhaW0gYSBub3ZlbCB2aXJ1cywgbWFueSBvZiB0aGUgdmlydXNlcyB3ZSByZWNvdmVyZWQgYXJlIHVuY2xhc3NpZmllZCBiZXlvbmQgdGhlIG9yZGVyIG9yIGZhbWlseSBjbGFzc2lmaWNhdGlvbiwgd2hpY2ggY2FuIG1ha2Ugc2VsZWN0aW5nIGFuIGlkZW50aXR5IHRocmVzaG9sZCBkaWZmaWN1bHQuIFRoZXJlZm9yZSwgd2Ugc2VsZWN0ZWQg4omkODUlIGFzIHRoZSBjdXQtb2ZmIGJlY2F1c2UgS2FsYW50YXIgZXQgYWwuLCAoMjAyMCkgc3VnZ2VzdHMgdGhhdCA8OTAlIG50IGlkZW50aXR5IGlzIGEgZ29vZCBnZW5lcmFsIHRocmVzaG9sZCBhbmQgd2Ugb3B0ZWQgdG8gYmUgbW9yZSBjb25zZXJ2YXRpdmUgaW4gb3VyIGFzc2lnbm1lbnRzIG9mIG5vdmVsIHZpcnVzZXMuDQoNCiMgTGlicmFyaWVzDQoNCmBgYHtyLCBsb2FkX2xpYnJhcmllcywgbWVzc2FnZSA9IEZBTFNFLCB3YXJuaW5nID0gRkFMU0V9DQpyZXF1aXJlKHBhY21hbikNCnBhY21hbjo6cF9sb2FkKHRpZHl2ZXJzZSwgamFuaXRvciwgaGVyZSwgRFQsIGd0LCBwaHlsb3Rvb2xzLCBhc3NlcnRyLCByZWFkeGwsIHBhdGNod29yaywgcmVzaGFwZTIsIGdndGV4dCwgb3Blbnhsc3gsIGdyaWQsIHRpZmYpDQpgYGANCg0KIyBMb2FkIERhdGENCg0KYGBge3IsIGxvYWRfZGF0YSwgbWVzc2FnZSA9IEZBTFNFLCB3YXJuaW5nID0gRkFMU0V9DQp2aXJ1c19tYXN0ZXJfMjAyMyA8LSByZWFkX2NzdihoZXJlKCJEYXRhL3RibGFzdHhfbWFzdGVyLmNzdiIpKQ0KYGBgDQoNCiMgU2VxdWVuY2luZyBTdW1tYXJ5IA0KDQpgYGB7ciwgc2VxLXN1bW1hcnksIG1lc3NhZ2UgPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFfQ0KIyBSZWFkIGNvdW50ICYgY29udGlncw0KdmlydXNfbWFzdGVyXzIwMjMgJT4lIA0KICBtdXRhdGUocmVhZHNfbG9nMTAgPSBsb2cxMCh0b3RhbF9yZWFkX2NvdW50KSkgJT4lIA0KICBkcm9wX25hKGdlbm9tZSkgJT4lIA0KICBnZ3Bsb3QoYWVzKHggPSBjb250aWdfbGVuZ3RoLCB5ID0gcmVhZHNfbG9nMTApKSArDQogIGdlb21fcG9pbnQoYWVzKGNvbG91ciA9IGdlbm9tZSkpICsNCiAgc2NhbGVfY29sb3VyX3ZpcmlkaXNfZCgiR2Vub21lIikgKw0KICB0aGVtZV9idygpICsNCiAgbGFicyh4ID0gIkNvbnRpZyBMZW5ndGggKG50KSIsDQogICAgICAgeSA9ICJSZWFkcyAoTG9nIDEwKSIpDQoNCiMgUmVhZCBjb3VudCAmIGNvbnRpZ3MgKG1vc3F1aXRvIHNwZWNpZXMpDQoNCnZpcnVzX21hc3Rlcl8yMDIzICU+JSANCiAgbXV0YXRlKHJlYWRzX2xvZzEwID0gbG9nMTAodG90YWxfcmVhZF9jb3VudCkpICU+JSANCiAgZHJvcF9uYShnZW5vbWUpICU+JSANCiAgZ2dwbG90KGFlcyh4ID0gY29udGlnX2xlbmd0aCwgeSA9IHJlYWRzX2xvZzEwKSkgKw0KICBnZW9tX3BvaW50KGFlcyhjb2xvdXIgPSBtb3NxdWl0b19zcGVjaWVzKSkgKw0KICBzY2FsZV9jb2xvdXJfdmlyaWRpc19kKCJTcGVjaWVzIikgKw0KICB0aGVtZV9idygpICsNCiAgbGFicyh4ID0gIkNvbnRpZyBMZW5ndGggKG50KSIsDQogICAgICAgeSA9ICJSZWFkcyAoTG9nIDEwKSIpDQoNCiMgQ29udGlnIGxlbmd0aCBhbmQgY292ZXJhZ2UNCnZpcnVzX21hc3Rlcl8yMDIzICU+JSANCiAgbXV0YXRlKGNvdmVyYWdlX2xvZzEwID0gbG9nMTAoY292ZXJhZ2UpKSAlPiUgDQogIGdncGxvdChhZXMoeCA9IGNvbnRpZ19sZW5ndGgsIHkgPSBjb3ZlcmFnZV9sb2cxMCkpICsNCiAgZ2VvbV9wb2ludChhZXMoY29sb3VyID0gZ2Vub21lKSkgKw0KICBzY2FsZV9jb2xvdXJfdmlyaWRpc19kKCkgKw0KICB0aGVtZV9idygpICsNCiAgICBsYWJzKHggPSAiQ29udGlnIExlbmd0aCAobnQpIiwNCiAgICAgICB5ID0gIkNvdmVyYWdlIChMb2cgMTApIikNCg0KIyBDb3ZlcmFnZSByZWFkcw0KDQp2aXJ1c19tYXN0ZXJfMjAyMyAlPiUgDQogIG11dGF0ZShjb3ZlcmFnZV9sb2cxMCA9IGxvZzEwKGNvdmVyYWdlKSkgJT4lIA0KICBtdXRhdGUocmVhZHNfbG9nMTAgPSBsb2cxMCh0b3RhbF9yZWFkX2NvdW50KSkgJT4lIA0KICBnZ3Bsb3QoYWVzKHggPSBjb3ZlcmFnZV9sb2cxMCwgeSA9IHJlYWRzX2xvZzEwKSkgKw0KICBnZW9tX3BvaW50KGFlcyhjb2xvdXIgPSBnZW5vbWUpKSArDQogIHNjYWxlX2NvbG91cl92aXJpZGlzX2QoIkdlbm9tZSIpICsNCiAgdGhlbWVfYncoKSArDQogIGxhYnMoeCA9ICJDb3ZlcmFnZSBEZXB0aCAoTG9nIDEwKSIsDQogICAgICAgeSA9ICJSZWFkcyAoTG9nIDEwKSIpDQoNCiMgQ29udGlnIExlbmd0aCBhbmQgJSBJRA0KdmlydXNfbWFzdGVyXzIwMjMgJT4lIA0KICBnZ3Bsb3QoYWVzKHggPSBjb250aWdfbGVuZ3RoLCB5ID0gZ3JlYXRlc3RfaWRlbnRpdHlfcGVyY2VudCkpICsNCiAgZ2VvbV9wb2ludChhZXMoY29sb3VyID0gZ2Vub21lKSkgKw0KICBzY2FsZV9jb2xvdXJfdmlyaWRpc19kKCkgKw0KICB0aGVtZV9idygpICsNCiAgbGFicyh4ID0gIkNvbnRpZyBMZW5ndGggKG50KSIsDQogICAgICAgeSA9ICJQZXJjZW50IGFhIElkZW50aXR5IikNCmBgYA0KDQojIEJMQVNUIFN1bW1hcnkNCg0KYGBge3IsIHJlYWRfY29udGlnX3N1bW1hcnksIG1lc3NhZ2UgPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFfQ0KbGlicmFyeV9zdW1tYXJ5IDwtIHZpcnVzX21hc3Rlcl8yMDIzICU+JQ0KICBncm91cF9ieShtb3NxdWl0b19zcGVjaWVzLCBzYW1wbGVfbnVtYmVyKSAlPiUNCiAgc3VtbWFyaXNlKG4gPSBuX2Rpc3RpbmN0KG1vc3F1aXRvX3NwZWNpZXMpKSAlPiUNCiAgZ3JvdXBfYnkobW9zcXVpdG9fc3BlY2llcykgJT4lDQogIHN1bW1hcmlzZShuID0gbigpKSAlPiUNCiAgYWRvcm5fdG90YWxzKCkNCg0KeWVhcnMgPC0gdmlydXNfbWFzdGVyXzIwMjMgJT4lIA0KICBncm91cF9ieShjb2xsZWN0aW9uX3llYXIsIHZpcnVzX25hbWUpICU+JSANCiAgc3VtbWFyaXNlKGNvdW50ID0gbl9kaXN0aW5jdCh2aXJ1c19uYW1lLCBjb2xsZWN0aW9uX3llYXIpKSAlPiUgDQogIHBpdm90X3dpZGVyKG5hbWVzX2Zyb20gPSBjb2xsZWN0aW9uX3llYXIsIHZhbHVlc19mcm9tID0gY291bnQsIHZhbHVlc19maWxsID0gMCkNCg0KdmlydXNfbGluZWFnZSA8LSB2aXJ1c19tYXN0ZXJfMjAyMyAlPiUgDQogIGdyb3VwX2J5KHZpcnVzX25hbWUsIHZpcmFsX2ZhbWlseSwgZ2Vub21lKSAlPiUgDQogIHN1bW1hcmlzZShuID0gbl9kaXN0aW5jdCh2aXJ1c19uYW1lLCB2aXJhbF9mYW1pbHksIGdlbm9tZSkpICU+JSANCiAgc2VsZWN0KC0ibiIpDQoNCnZpcnVzX21hc3Rlcl8yMDIzICU+JSANCiAgZ3JvdXBfYnkodmlydXNfbmFtZSkgJT4lIA0KICBzdW1tYXJpc2Uobl9jb250aWdzID0gbigpLA0KICAgICAgICAgICAgbWVhbl9jb3YgPSBtZWFuKGNvdmVyYWdlKSwNCiAgICAgICAgICAgIG1pbl9jb3YgPSBtaW4oY292ZXJhZ2UpLA0KICAgICAgICAgICAgbWF4X2NvdiA9IG1heChjb3ZlcmFnZSksDQogICAgICAgICAgICBtZWFuX3BpZCA9IG1lYW4oZ3JlYXRlc3RfaWRlbnRpdHlfcGVyY2VudCksDQogICAgICAgICAgICBtZWRfcGlkID0gbWVkaWFuKGdyZWF0ZXN0X2lkZW50aXR5X3BlcmNlbnQpLA0KICAgICAgICAgICAgbWluX3BpZCA9IG1pbihncmVhdGVzdF9pZGVudGl0eV9wZXJjZW50KSwNCiAgICAgICAgICAgIG1heF9waWQgPSBtYXgoZ3JlYXRlc3RfaWRlbnRpdHlfcGVyY2VudCksDQogICAgICAgICAgICB0b3RhbF9yZWFkcyA9IHN1bSh0b3RhbF9yZWFkX2NvdW50KSwNCiAgICAgICAgICAgIGxvbmdlc3RfY29udGlnID0gbWF4KGNvbnRpZ19sZW5ndGgpKSAlPiUgDQogIGxlZnRfam9pbih2aXJ1c19saW5lYWdlLCBieSA9ICJ2aXJ1c19uYW1lIikgJT4lIA0KICBncm91cF9ieShnZW5vbWUsIHZpcmFsX2ZhbWlseSkgJT4lIA0KICBhcnJhbmdlKGdlbm9tZSwgdmlyYWxfZmFtaWx5KSAlPiUgDQogIHJlbG9jYXRlKHRvdGFsX3JlYWRzLCAuYWZ0ZXIgPSAibl9jb250aWdzIikgJT4lIA0KICByZWxvY2F0ZShsb25nZXN0X2NvbnRpZywgLmFmdGVyID0gIm5fY29udGlncyIpICU+JSANCiAgbXV0YXRlKGFjcm9zcyguY29scyA9ICJ2aXJ1c19uYW1lIiwNCiAgICAgICAgICAgICAgICB+Y2FzZV93aGVuKGdyZXBsKCJNYW5pdG9iYSIsIHZpcnVzX25hbWUpICYgIWdyZXBsKCJNYW5pdG9iYSB2aXJ1cyIsIHZpcnVzX25hbWUpIH4gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlMCguLCAiKiIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IC4pKSkgJT4lIA0KICBndCgpICU+JSANCiAgZm10X251bWJlcihjb2x1bW5zID0gbWVhbl9jb3Y6bWF4X3BpZCwNCiAgICAgICAgICAgICBkZWNpbWFscyA9IDIpICU+JSANCiAgZm10X251bWJlcihjb2x1bW5zID0gdG90YWxfcmVhZHMsDQogICAgICAgICAgICAgc2VwX21hcmsgPSAiLCIsDQogICAgICAgICAgICAgZGVjaW1hbHMgPSAwKSAlPiUgDQogIHRhYl9zcGFubmVyKGxhYmVsID0gIkNvdmVyYWdlIERlcHRoIiwgY29sdW1ucyA9IGMobWVhbl9jb3YsIG1pbl9jb3YsIG1heF9jb3YpKSAlPiUgDQogIHRhYl9zcGFubmVyKGxhYmVsID0gImFhIFBlcmNlbnQgSWRlbnRpdHkiLCBjb2x1bW5zID0gYyhtZWFuX3BpZCwgbWluX3BpZCwgbWF4X3BpZCwgbWVkX3BpZCkpICU+JSANCiAgY29sc19sYWJlbCgNCiAgICBuX2NvbnRpZ3MgPSAiQ29udGlncyIsDQogICAgbG9uZ2VzdF9jb250aWcgPSAiTG9uZ2VzdCBDb250aWcgKG50KSIsDQogICAgdG90YWxfcmVhZHMgPSAiUmVhZHMiLA0KICAgIG1lYW5fY292ID0gIk1lYW4iLCBtaW5fY292ID0gIk1pbiIsIG1heF9jb3YgPSAiTWF4IiwNCiAgICBtZWFuX3BpZCA9ICJNZWFuIiwgbWluX3BpZCA9ICJNaW4iLCBtYXhfcGlkID0gIk1heCIsIG1lZF9waWQgPSAiTWVkaWFuIiwNCiAgICB2aXJ1c19uYW1lID0gIlZpcnVzIikgJT4lIA0KICB0YWJfc3R5bGUoDQogICAgc3R5bGUgPSBsaXN0KGNlbGxfZmlsbChjb2xvciA9ICJncmV5IiksDQogICAgICAgICAgICAgICAgIGNlbGxfdGV4dCh3ZWlnaHQgPSAiYm9sZCIpKSwNCiAgICBsb2NhdGlvbnMgPSBjZWxsc19yb3dfZ3JvdXBzKGdyb3VwcyA9IGV2ZXJ5dGhpbmcoKSkNCiAgKSAlPiUgDQogIHRhYl9zdHlsZSgNCiAgICBzdHlsZSA9IGNlbGxfYm9yZGVycygNCiAgICAgIHNpZGVzID0gImxlZnQiLA0KICAgICAgd2VpZ2h0ID0gcHgoMiksDQogICAgICBjb2xvciA9ICJncmV5IiksDQogICAgbG9jYXRpb25zID0gY2VsbHNfYm9keSgNCiAgICAgIGNvbHVtbnMgPSBjKG1lYW5fY292LCBtZWFuX3BpZCwgIm5fY29udGlncyIpDQogICAgKQ0KICApICU+JSANCiAgZGF0YV9jb2xvcigNCiAgICBjb2x1bW5zID0gbWVhbl9waWQ6bWF4X3BpZCwNCiAgICBwYWxldHRlID0gInZpcmlkaXMiDQogICAgDQogICkgJT4lIA0KICB0YWJfZm9vdG5vdGUoIiogUHV0YXRpdmVseSBub3ZlbCB2aXJ1cy4iKQ0KYGBgDQoNCiMgVmlydXMgRGV0ZWN0aW9ucyBieSBTcGVjaWVzDQoNCmBgYHtyfQ0KdmlydXNfbWFzdGVyXzIwMjMgJT4lIA0KICBncm91cF9ieShtb3NxdWl0b19zcGVjaWVzLCB2aXJ1c19uYW1lKSAlPiUgDQogIHN1bW1hcmlzZShjb3VudCA9IG5fZGlzdGluY3QodmlydXNfbmFtZSwgc2FtcGxlX251bWJlcikpICU+JSANCiAgcGl2b3Rfd2lkZXIobmFtZXNfZnJvbSA9IG1vc3F1aXRvX3NwZWNpZXMsIHZhbHVlc19mcm9tID0gY291bnQsIHZhbHVlc19maWxsID0gMCkgJT4lIA0KICBtdXRhdGUoIkFlZGVzIGNhbmFkZW5zaXMgXG4gVG90YWw6IDEiID0gKGBBZWRlcyBjYW5hZGVuc2lzYCAvIDEpICogMTAwLA0KICAgICAgICAgIkFlZGVzIHZleGFucyBcbiBUb3RhbDogMTkiID0gKGBBZWRlcyB2ZXhhbnNgIC8gMTkpICogMTAwLA0KICAgICAgICAgIkFub3BoZWxlcyBlYXJsZWkgXG4gVG90YWw6IDEiID0gKGBBbm9waGVsZXMgZWFybGVpYCAvIDEpICogMTAwLA0KICAgICAgICAgIkNvcXVpbGxldHRpZGlhIHBlcnR1cmJhbnMgXG4gVG90YWw6IDYiID0gKGBDb3F1aWxsZXR0aWRpYSBwZXJ0dXJiYW5zYCAvIDYpICogMTAwLA0KICAgICAgICAgIkN1bGV4IHRhcnNhbGlzIFxuIFRvdGFsOiAxMSIgPSAoYEN1bGV4IHRhcnNhbGlzYCAvIDExKSAqIDEwMCwNCiAgICAgICAgICJPY2hsZXJvdGF0dXMgZG9yc2FsaXMgXG4gVG90YWw6IDUiID0gKGBPY2hsZXJvdGF0dXMgZG9yc2FsaXNgIC8gNSkgKiAxMDAsDQogICAgICAgICAiT2NobGVyb3RhdHVzIGZsYXZlc2NlbnMgXG4gVG90YWw6IDEiID0gKGBPY2hsZXJvdGF0dXMgZmxhdmVzY2Vuc2AgLyAxKSAqIDEwMCwNCiAgICAgICAgICJPY2hsZXJvdGF0dXMgdHJpc2VyaWF0dXMgXG4gVG90YWw6IDEiID0gKGBPY2hsZXJvdGF0dXMgdHJpc2VyaWF0dXNgIC8gMSkgKiAxMDAsDQogICkgJT4lIHNlbGVjdCgtYEFlZGVzIGNhbmFkZW5zaXNgOi1gT2NobGVyb3RhdHVzIHRyaXNlcmlhdHVzYCkgJT4lIA0KICBsZWZ0X2pvaW4odmlydXNfbGluZWFnZSwgYnkgPSAidmlydXNfbmFtZSIpICU+JSANCiAgIGxlZnRfam9pbih5ZWFycywgYnkgPSAidmlydXNfbmFtZSIpICU+JSANCiAgIHJlbG9jYXRlKCIyMDIwIiwgLmFmdGVyID0gInZpcnVzX25hbWUiKSAlPiUgcmVsb2NhdGUoIjIwMjEiLCAuYWZ0ZXIgPSAiMjAyMCIpICU+JSANCiAgIG11dGF0ZShhY3Jvc3MoLmNvbHMgPSBjKCIyMDIwIiwgIjIwMjEiKSwNCiAgICAgICAgICAgICAgICAgfmNhc2Vfd2hlbiguID09ICIxIiB+IFRSVUUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiA9PSAiMCIgfiBGQUxTRSkpKSAlPiUgDQogICBtdXRhdGUoYWNyb3NzKC5jb2xzID0gInZpcnVzX25hbWUiLA0KICAgICAgICAgICAgICAgICB+Y2FzZV93aGVuKGdyZXBsKCJNYW5pdG9iYSIsIHZpcnVzX25hbWUpICYgIWdyZXBsKCJNYW5pdG9iYSB2aXJ1cyIsIHZpcnVzX25hbWUpIH4gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXN0ZTAoLiwgIioiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gLikpKSAlPiUgDQogIGdyb3VwX2J5KGdlbm9tZSwgdmlyYWxfZmFtaWx5KSAlPiUgDQogIGFycmFuZ2UoZ2Vub21lLCB2aXJhbF9mYW1pbHkpICU+JSANCiAgZ3QoKSAlPiUgDQogIGZtdF9udW1iZXIoY29sdW1ucyA9ICJBZWRlcyBjYW5hZGVuc2lzIFxuIFRvdGFsOiAxIjoiT2NobGVyb3RhdHVzIHRyaXNlcmlhdHVzIFxuIFRvdGFsOiAxIiwNCiAgICAgICAgICAgICBkZWNpbWFscyA9IDIpICU+JSANCiAgdGFiX3NwYW5uZXIobGFiZWwgPSAiUGVyY2VudCBvZiBMaWJyYXJpZXMgRGV0ZWN0ZWQgYnkgU3BlY2llcyIsIA0KICAgICAgICAgICAgICBjb2x1bW5zID0gYygiQWVkZXMgY2FuYWRlbnNpcyBcbiBUb3RhbDogMSI6Ik9jaGxlcm90YXR1cyB0cmlzZXJpYXR1cyBcbiBUb3RhbDogMSIpKSAlPiUgDQogICB0YWJfc3Bhbm5lcihsYWJlbCA9IGh0bWwoIlllYXJzIERldGVjdGVkIiksDQogICAgICAgICAgICAgICBjb2x1bW5zID0gYygiMjAyMCI6IjIwMjEiKSkgJT4lIA0KICBjb2xzX2xhYmVsKA0KICAgICJBZWRlcyBjYW5hZGVuc2lzIFxuIFRvdGFsOiAxIiA9IGh0bWwoIjxlbT5BZWRlcyBjYW5hZGVuc2lzPC9lbT4gPGJyPiBUb3RhbDogMSIpLA0KICAgICJBZWRlcyB2ZXhhbnMgXG4gVG90YWw6IDE5IiA9IGh0bWwoIjxlbT5BZWRlcyB2ZXhhbnM8L2VtPiA8YnI+IFRvdGFsOiAxOSIpLA0KICAgICJBbm9waGVsZXMgZWFybGVpIFxuIFRvdGFsOiAxIiA9IGh0bWwoIjxlbT5Bbm9waGVsZXMgZWFybGVpPC9lbT4gPGJyPiBUb3RhbDogMSIpLA0KICAgICJDb3F1aWxsZXR0aWRpYSBwZXJ0dXJiYW5zIFxuIFRvdGFsOiA2IiA9IGh0bWwoIjxlbT5Db3F1aWxsZXR0aWRpYSBwZXJ0dXJiYW5zPC9lbT4gPGJyPiBUb3RhbDogNiIpLA0KICAgICJDdWxleCB0YXJzYWxpcyBcbiBUb3RhbDogMTEiID0gaHRtbCgiPGVtPkN1bGV4IHRhcnNhbGlzPC9lbT4gPGJyPiBUb3RhbDogMTEiKSwNCiAgICAiT2NobGVyb3RhdHVzIGRvcnNhbGlzIFxuIFRvdGFsOiA1IiA9IGh0bWwoIjxlbT5PY2hsZXJvdGF0dXMgZG9yc2FsaXM8L2VtPiA8YnI+IFRvdGFsOiA1IiksDQogICAgIk9jaGxlcm90YXR1cyBmbGF2ZXNjZW5zIFxuIFRvdGFsOiAxIiA9IGh0bWwoIjxlbT5PY2hsZXJvdGF0dXMgZmxhdmVzY2VuczwvZW0+IDxicj4gVG90YWw6IDEiKSwNCiAgICAiT2NobGVyb3RhdHVzIHRyaXNlcmlhdHVzIFxuIFRvdGFsOiAxIiA9IGh0bWwoIjxlbT5PY2hsZXJvdGF0dXMgdHJpc2VyaWF0dXM8L2VtPiA8YnI+IFRvdGFsOiAxIiksDQogICAgdmlydXNfbmFtZSA9ICJWaXJ1cyIpICU+JSANCiAgIGNvbHNfYWxpZ24oYWxpZ24gPSAiY2VudGVyIiwNCiAgICAgICAgICAgICAgY29sdW1ucyA9ICIyMDIwIjoiT2NobGVyb3RhdHVzIHRyaXNlcmlhdHVzIFxuIFRvdGFsOiAxIikgJT4lIA0KICAgdGFiX3N0eWxlKA0KICAgICBzdHlsZSA9IGxpc3QoY2VsbF9maWxsKGNvbG9yID0gImdyZXkiKSwNCiAgICAgICAgICAgICAgICAgIGNlbGxfdGV4dCh3ZWlnaHQgPSAiYm9sZCIpKSwNCiAgICAgbG9jYXRpb25zID0gY2VsbHNfcm93X2dyb3Vwcyhncm91cHMgPSBldmVyeXRoaW5nKCkpKSAlPiUgDQogICBkYXRhX2NvbG9yKGNvbHVtbnMgPSBgQWVkZXMgY2FuYWRlbnNpcyBcbiBUb3RhbDogMWA6bGFzdF9jb2woKSwNCiAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJ2aXJpZGlzIiwgDQogICAgICAgICAgICAgIGRpcmVjdGlvbiA9ICJyb3ciKSAlPiUgDQogICB0YWJfc3R5bGUoDQogICAgIHN0eWxlID0gY2VsbF9ib3JkZXJzKA0KICAgICAgIHNpZGVzID0gImxlZnQiLA0KICAgICAgIHdlaWdodCA9IHB4KDIpLA0KICAgICAgIGNvbG9yID0gImJsYWNrIiksDQogICAgIGxvY2F0aW9ucyA9IGNlbGxzX2JvZHkoDQogICAgICAgY29sdW1ucyA9IGMoIkFlZGVzIGNhbmFkZW5zaXMgXG4gVG90YWw6IDEiKSkpICU+JSANCiAgdGFiX2Zvb3Rub3RlKCIqIFB1dGF0aXZlbHkgbm92ZWwgdmlydXMiKSAlPiUgDQogIHRhYl9vcHRpb25zKC4sIGNvbnRhaW5lci53aWR0aCA9IDE1MDApDQpgYGANCg0KIyBWaXJhbCBGYW1pbGllcw0KDQpgYGB7ciwgdmlyYWwtZmFtaWx5LCBtZXNzYWdlID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRX0NCnZpcnVzX21hc3Rlcl8yMDIzICU+JSANCiAgZGlzdGluY3QodmlydXNfbmFtZSwgdmlyYWxfZmFtaWx5LCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgDQogIGdyb3VwX2J5KGdlbm9tZSwgdmlyYWxfZmFtaWx5KSAlPiUgDQogIHN1bW1hcmlzZShuID0gbigpKSAlPiUgDQogIGFycmFuZ2UoZ2Vub21lLCBuKSAlPiUNCiAgZ2dwbG90KGFlcyh4ID0gZmN0X2lub3JkZXIodmlyYWxfZmFtaWx5KSwgeSA9IG4pKSArDQogIGdlb21fY29sKGFlcyhmaWxsID0gZ2Vub21lKSkgKw0KICBzY2FsZV9maWxsX3ZpcmlkaXNfZCgiR2Vub21lIikgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobGltaXRzID0gYygwLCAxNCksIGJyZWFrcyA9IGMoMCwgMiwgNCwgNiwgOCwgMTAsIDEyLCAxNCksIGV4cGFuZCA9IGMoMCwwKSkgKw0KICBjb29yZF9mbGlwKCkgKyANCiAgdGhlbWVfYncoKSArDQogIGxhYnMoeCA9ICJWaXJhbCBGYW1pbHkiLA0KICAgICAgIHkgPSAiTnVtYmVyIG9mIERpc3RpbmN0IFZpcnVzZXMgRGV0ZWN0ZWQiKQ0KDQoNCg0KdmlydXNfbWFzdGVyXzIwMjMgJT4lIA0KICBmaWx0ZXIobm92ZWxfZmxhZyA9PSAiTm90IE5vdmVsIikgJT4lIA0KICBkaXN0aW5jdCh2aXJ1c19uYW1lLCB2aXJhbF9mYW1pbHksIC5rZWVwX2FsbCA9IFRSVUUpICU+JSANCiAgZ3JvdXBfYnkoZ2Vub21lLCB2aXJhbF9mYW1pbHkpICU+JSANCiAgc3VtbWFyaXNlKG4gPSBuKCkpICU+JSANCiAgYXJyYW5nZShnZW5vbWUsIG4pICU+JQ0KICBnZ3Bsb3QoYWVzKHggPSBmY3RfaW5vcmRlcih2aXJhbF9mYW1pbHkpLCB5ID0gbikpICsNCiAgZ2VvbV9jb2woYWVzKGZpbGwgPSBnZW5vbWUpKSArDQogIHNjYWxlX2ZpbGxfdmlyaWRpc19kKCJHZW5vbWUiKSArDQogIHNjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsIDEyKSwgYnJlYWtzID0gYygwLCAyLCA0LCA2LCA4LCAxMCwgMTIpLCBleHBhbmQgPSBjKDAsMCkpICsNCiAgY29vcmRfZmxpcCgpICsgDQogIHRoZW1lX2J3KCkgKw0KICBsYWJzKHggPSAiVmlyYWwgRmFtaWx5IiwNCiAgICAgICB5ID0gIk51bWJlciBvZiBEaXN0aW5jdCBWaXJ1c2VzIERldGVjdGVkIikNCg0KDQp2aXJ1c19tYXN0ZXJfMjAyMyAlPiUgDQogIGZpbHRlcihub3ZlbF9mbGFnICE9ICJOb3QgTm92ZWwiKSAlPiUgDQogIGRpc3RpbmN0KHZpcnVzX25hbWUsIHZpcmFsX2ZhbWlseSwgLmtlZXBfYWxsID0gVFJVRSkgJT4lIA0KICBncm91cF9ieShnZW5vbWUsIHZpcmFsX2ZhbWlseSkgJT4lIA0KICBzdW1tYXJpc2UobiA9IG4oKSkgJT4lIA0KICBhcnJhbmdlKGdlbm9tZSwgbikgJT4lDQogIGdncGxvdChhZXMoeCA9IGZjdF9pbm9yZGVyKHZpcmFsX2ZhbWlseSksIHkgPSBuKSkgKw0KICBnZW9tX2NvbChhZXMoZmlsbCA9IGdlbm9tZSkpICsNCiAgc2NhbGVfZmlsbF92aXJpZGlzX2QoIkdlbm9tZSIpICsNCiAgc2NhbGVfeV9jb250aW51b3VzKGxpbWl0cyA9IGMoMCwgNCksIGJyZWFrcyA9IGMoMCwgMSwgMiwgMywgNCksIGV4cGFuZCA9IGMoMCwwKSkgKw0KICBjb29yZF9mbGlwKCkgKyANCiAgdGhlbWVfYncoKSArDQogIGxhYnMoeCA9ICJWaXJhbCBGYW1pbHkiLA0KICAgICAgIHkgPSAiTnVtYmVyIG9mIERpc3RpbmN0IFZpcnVzZXMgRGV0ZWN0ZWQiKQ0KDQoNCiANCg0KdmlydXNfbWFzdGVyXzIwMjMgJT4lIA0KICBkaXN0aW5jdCh2aXJ1c19uYW1lLCB2aXJhbF9mYW1pbHksIC5rZWVwX2FsbCA9IFRSVUUpICU+JSANCiAgZ3JvdXBfYnkoZ2Vub21lLCB2aXJhbF9mYW1pbHkpICU+JSANCiAgc3VtbWFyaXNlKG4gPSBuKCkpICU+JSANCiAgYXJyYW5nZShnZW5vbWUsIGRlc2MobikpICU+JSANCiAgYWRvcm5fdG90YWxzKCkgJT4lIA0KICBndCgpICU+JSANCiAgY29sc19sYWJlbCgNCiAgICBnZW5vbWUgPSAiR2Vub21lIiwNCiAgICB2aXJhbF9mYW1pbHkgPSAiRmFtaWx5IikNCiANCg0KdmlydXNfbWFzdGVyXzIwMjMgJT4lIA0KICBkaXN0aW5jdCh2aXJ1c19uYW1lLCB2aXJhbF9mYW1pbHksIC5rZWVwX2FsbCA9IFRSVUUpICU+JSANCiAgZ3JvdXBfYnkoZ2Vub21lLCB2aXJhbF9mYW1pbHkpICU+JSANCiAgc3VtbWFyaXNlKG4gPSBuKCkpICU+JSANCiAgYXJyYW5nZShnZW5vbWUsIGRlc2MobikpICU+JSANCiAgYWRvcm5fdG90YWxzKCkgJT4lIA0KICBndCgpICU+JSANCiAgY29sc19sYWJlbCgNCiAgICBnZW5vbWUgPSAiR2Vub21lIiwNCiAgICB2aXJhbF9mYW1pbHkgPSAiRmFtaWx5IikNCmBgYA0KDQojIE5vdmVsIFZpcnVzZXMNCg0KYGBge3IsIG5vdmVsLXZpcnVzZXMsIG1lc3NhZ2UgPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFfQ0KdmlydXNfbWFzdGVyXzIwMjMgJT4lIA0KICBkaXN0aW5jdCh2aXJ1c19uYW1lLCB2aXJhbF9mYW1pbHksIC5rZWVwX2FsbCA9IFRSVUUpICU+JSANCiAgZmlsdGVyKHN0cl9kZXRlY3QodmlydXNfbmFtZSwgIk1hbml0b2JhICIpKSAlPiUgDQogIGZpbHRlcighc3RyX2RldGVjdCh2aXJ1c19uYW1lLCAiTWFuaXRvYmEgdmlydXMiKSkgJT4lIA0KICBncm91cF9ieShnZW5vbWUsIHZpcmFsX2ZhbWlseSkgJT4lIA0KICBzdW1tYXJpc2UobiA9IG4oKSkgJT4lIA0KICBndCgpDQoNCnZpcnVzX21hc3Rlcl8yMDIzICU+JSANCiAgZGlzdGluY3QodmlydXNfbmFtZSwgdmlyYWxfZmFtaWx5LCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgDQogIGZpbHRlcihzdHJfZGV0ZWN0KHZpcnVzX25hbWUsICJNYW5pdG9iYSAiKSkgJT4lIA0KICBmaWx0ZXIoIXN0cl9kZXRlY3QodmlydXNfbmFtZSwgIk1hbml0b2JhIHZpcnVzIikpICU+JSANCiAgZ3JvdXBfYnkoZ2Vub21lLCB2aXJ1c19uYW1lKSAlPiUgDQogIHN1bW1hcmlzZShuID0gbigpKSAlPiUgDQogIGFkb3JuX3RvdGFscygpICU+JSANCiAgZ3QoKQ0KDQpgYGANCg0KIyBWaXJ1cyBQcm9maWxlcw0KDQo+IEJlbG93IGFyZSBzdW1tYXJpZXMgZm9yIGVhY2ggdmlydXMgZGV0ZWN0ZWQuIA0KDQpgYGB7ciwgdmlydXNfdGFibGV9DQp2aXJ1c19wcm9maWxlX3RhYmxlIDwtIGZ1bmN0aW9uKHZpcnVzKSB7DQoNCiB2aXJ1c190YWJsZSA8PC0gIHZpcnVzX21hc3Rlcl8yMDIzICU+JSANCiAgZmlsdGVyKHZpcnVzX25hbWUgPT0gdmlydXMpICU+JSANCiAgI3NlbGVjdCgtImNvbnRpZ19zZXF1ZW5jZXMiKSAlPiUgDQogIHN1bW1hcmlzZSgNCiAgICBudW1fc3BlY2llcyA9IG5fZGlzdGluY3QobW9zcXVpdG9fc3BlY2llcyksDQogICAgbnVtX2NvbnRpZyA9IG4oKSwNCiAgICBsb25nZXN0X2NvbnRpZyA9IG1heChjb250aWdfbGVuZ3RoKSwNCiAgICBzaG9ydGVzdF9jb250aWcgPSBtaW4oY29udGlnX2xlbmd0aCksDQogICAgYXZnX250X2lkID0gbWVhbihncmVhdGVzdF9pZGVudGl0eV9wZXJjZW50KSwNCiAgICBtYXhfbnRfaWQgPSBtYXgoZ3JlYXRlc3RfaWRlbnRpdHlfcGVyY2VudCksDQogICAgbWluX250X2lkID0gbWluKGdyZWF0ZXN0X2lkZW50aXR5X3BlcmNlbnQpDQogICAgDQogICkgJT4lIA0KICBndCgpICU+JSANCiAgY29sc19sYWJlbCgNCiAgICBsb25nZXN0X2NvbnRpZyA9ICJNYXggQ29udGlnIiwNCiAgICBzaG9ydGVzdF9jb250aWcgPSAiTWluIENvbnRpZyIsDQogICAgYXZnX250X2lkID0gIkF2ZXJhZ2UgYWEgSWQiLA0KICAgIG1heF9udF9pZCA9ICJNYXggYWEgSWQiLA0KICAgIG1pbl9udF9pZCA9ICJNaW4gYWEgSWQiLA0KICAgIG51bV9jb250aWcgPSAibiBDb250aWdzIiwNCiAgICBudW1fc3BlY2llcyA9ICJuIFNwZWNpZXMiDQogICkgJT4lIA0KICB0YWJfaGVhZGVyKA0KICAgIHRpdGxlID0gcGFzdGUwKCJTdW1tYXJ5IFN0YXRzIGZvciIsICIgIiwgdmlydXMpDQogICkgJT4lIA0KICAgIGZtdF9udW1iZXIoDQogICAgICBjb2x1bW5zID0gNDpsYXN0X2NvbCgpLA0KICAgICAgZGVjaW1hbHMgPSAyDQogICAgKQ0KDQp9DQogIA0KYGBgDQoNCg0KDQpgYGB7ciwgdmlydXNfcHJvZmlsZXMsIHJlc3VsdHMgPSAnYXNpcyd9DQojIEFycmFuZ2UgZGYgZm9yIHZpcnVzIHJlcG9ydGluZw0KdmlydXNfbWFzdGVyXzIwMjMgPDwtIHZpcnVzX21hc3Rlcl8yMDIzICU+JSANCiAgbXV0YXRlKGFjcm9zcyguY29scyA9ICJ2aXJ1c19uYW1lIiwNCiAgICAgICAgICAgICAgICB+Y2FzZV93aGVuKGdyZXBsKCJNYW5pdG9iYSIsIHZpcnVzX25hbWUpICYgIWdyZXBsKCJNYW5pdG9iYSB2aXJ1cyIsIHZpcnVzX25hbWUpIH4gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlMCguLCAiKiIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IC4pKSkgJT4lIA0KICBhcnJhbmdlKGRlc2MoZ2Vub21lKSkgJT4lIA0KICBkcm9wX25hKHZpcnVzX25hbWUpDQoNCmZvcih2aXJ1cyBpbiB1bmlxdWUodmlydXNfbWFzdGVyXzIwMjMkdmlydXNfbmFtZSkpIHsNCg0KICBnZW5vbWUgPC0gdmlydXNfbWFzdGVyXzIwMjMgJT4lIA0KICAgIGFycmFuZ2UoZGVzYyhnZW5vbWUpKSAlPiUgDQogICAgZHJvcF9uYSh2aXJ1c19uYW1lKSAlPiUgIA0KICAgIGZpbHRlcih2aXJ1c19uYW1lID09IHZpcnVzKSAlPiUgDQogICAgcHVsbChnZW5vbWUpICU+JSANCiAgICBoZWFkKDEpDQogIA0KICBnZW5vbWUgPC0gcGFzdGUwKGdlbm9tZSkNCiAgDQogIGZhbWlseSA8LSB2aXJ1c19tYXN0ZXJfMjAyMyAlPiUgDQogICAgZmlsdGVyKHZpcnVzX25hbWUgPT0gdmlydXMpICU+JSANCiAgICBwdWxsKHZpcmFsX2ZhbWlseSkgJT4lIA0KICAgIGhlYWQoMSkNCiAgDQogIGZhbWlseSA8LSBwYXN0ZTAoZmFtaWx5KQ0KDQogIHNhbXBsZV9kZXRlY3Rpb25zIDwtIHZpcnVzX21hc3Rlcl8yMDIzICU+JSANCiAgICBmaWx0ZXIodmlydXNfbmFtZSA9PSB2aXJ1cykgJT4lIA0KICAgIGRpc3RpbmN0KHNhbXBsZV9udW1iZXIpDQogIHNhbXBsZV9kZXRlY3Rpb25zIDwtIHBhc3RlMChucm93KHNhbXBsZV9kZXRlY3Rpb25zKSkNCiAgDQogIA0KICBjYXQoJ1xuXG4jIycsIHZpcnVzLCAnXG5cbicpDQogIA0KICBjYXQoJ1xuXG4+JywgdmlydXMsICdoYXMgYSAnLCBnZW5vbWUsICdnZW5vbWUgYW5kIGlzIGEgbWVtYmVyIG9mIHRoZSBmYW1pbHknLCBmYW1pbHksICdhbmQgd2FzIGRldGVjdGVkIGluJywgc2FtcGxlX2RldGVjdGlvbnMsICdzYW1wbGUocykuJywgJ1NlZSBzdW1tYXJ5IGZpZ3VyZXMgYW5kIHRhYmxlcyBiZWxvdy4nLCAgJ1xuXG4nKQ0KICANCnByaW50KHN1cHByZXNzTWVzc2FnZXMoDQogIHZpcnVzX21hc3Rlcl8yMDIzICU+JSANCiAgICBmaWx0ZXIodmlydXNfbmFtZSA9PSB2aXJ1cykgJT4lIA0KICAgIHNlbGVjdCgtImNvbnRpZ19zZXF1ZW5jZSIpICU+JSANCiAgICBncm91cF9ieShtb3NxdWl0b19zcGVjaWVzLCBjb2xsZWN0aW9uX3llYXIsIGxvY2F0aW9uX3Bvb2wpICU+JSANCiAgICBzdW1tYXJpc2UobiA9IG5fZGlzdGluY3Qoc2FtcGxlX251bWJlcikpICU+JSANCiAgICBnZ3Bsb3QoYWVzKHggPSBtb3NxdWl0b19zcGVjaWVzLCB5ID0gbiwgZmlsbCA9IGxvY2F0aW9uX3Bvb2wpKSArDQogICAgZ2VvbV9jb2woKSArDQogICAgZmFjZXRfZ3JpZCguIH4gY29sbGVjdGlvbl95ZWFyKSArDQogICAgc2NhbGVfZmlsbF92aXJpZGlzX2QoIkxvY2F0aW9uIiwgb3B0aW9uID0gIm1hZ21hIikgKw0KICAgIHRoZW1lX2J3KCkgKw0KICAgIGxhYnModGl0bGUgPSBwYXN0ZTAoIk51bWJlciBvZiBWaXJ1cyBEZXRlY3Rpb25zIiksDQogICAgICAgc3VidGl0bGUgPSBwYXN0ZTAoIkZvciAiLCB2aXJ1cywgIiBieSBZZWFyLCBTcGVjaWVzIGFuZCBMb2NhdGlvbiIpKSArDQogICAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYsIGZhY2UgPSAiYm9sZCIpLA0KICAgICAgICBheGlzLnRpdGxlLnggPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMC41KSkNCiAgKSkNCiAgDQogIGNhdCgnXG5cbiMjIycsICdZZWFycyB7LnVubGlzdGVkIC51bm51bWJlcmVkfScsICdcblxuJykNCg0KICBwcmludChodG1sdG9vbHM6OnRhZ0xpc3QoDQogICAgdmlydXNfbWFzdGVyXzIwMjMgJT4lIA0KICAgICAgZmlsdGVyKHZpcnVzX25hbWUgPT0gdmlydXMpICU+JSANCiAgICAgIGdyb3VwX2J5KGNvbGxlY3Rpb25feWVhcikgJT4lIA0KICAgICAgc3VtbWFyaXNlKG4gPSBuX2Rpc3RpbmN0KHNhbXBsZV9udW1iZXIpKSAlPiUgDQogICAgICBndCgpICU+JSANCiAgICAgIGNvbHNfbGFiZWwoY29sbGVjdGlvbl95ZWFyID0gIlllYXIocykgRGV0ZWN0ZWQiKQ0KICAgICkpDQogIA0KICBjYXQoJ1xuXG4jIyMnLCAnTG9jYXRpb25zIHsudW5saXN0ZWQgLnVubnVtYmVyZWR9JywgJ1xuXG4nKQ0KICANCiAgICBwcmludChodG1sdG9vbHM6OnRhZ0xpc3QoDQogICAgdmlydXNfbWFzdGVyXzIwMjMgJT4lIA0KICAgICAgZmlsdGVyKHZpcnVzX25hbWUgPT0gdmlydXMpICU+JSANCiAgICAgIGdyb3VwX2J5KGxvY2F0aW9uX3Bvb2wpICU+JSANCiAgICAgIHN1bW1hcmlzZShuID0gbl9kaXN0aW5jdChzYW1wbGVfbnVtYmVyKSkgJT4lIA0KICAgICAgZ3QoKSAlPiUgDQogICAgICBjb2xzX2xhYmVsKGxvY2F0aW9uX3Bvb2wgPSAiTG9jYXRpb24ocykgRGV0ZWN0ZWQiKQ0KICAgICkpDQogICAgDQogICAgY2F0KCdcblxuIyMjJywgJ01vc3F1aXRvIFNwZWNpZXMgey51bmxpc3RlZCAudW5udW1iZXJlZH0nLCAnXG5cbicpDQogIA0KICAgIHByaW50KGh0bWx0b29sczo6dGFnTGlzdCgNCiAgICB2aXJ1c19tYXN0ZXJfMjAyMyAlPiUgDQogICAgICBmaWx0ZXIodmlydXNfbmFtZSA9PSB2aXJ1cykgJT4lIA0KICAgICAgZ3JvdXBfYnkobW9zcXVpdG9fc3BlY2llcykgJT4lIA0KICAgICAgc3VtbWFyaXNlKG4gPSBuX2Rpc3RpbmN0KHNhbXBsZV9udW1iZXIpKSAlPiUgDQogICAgICBndCgpICU+JSANCiAgICAgIGNvbHNfbGFiZWwobW9zcXVpdG9fc3BlY2llcyA9ICJNb3NxdWl0byBIb3N0cyIpDQogICAgKSkNCiAgICANCiAgICBjYXQoJ1xuXG4jIyMnLCAnQ29udGlnIFN1bW1hcnkgey51bmxpc3RlZCAudW5udW1iZXJlZH0nLCAnXG5cbicpDQoNCiAgdmlydXNfcHJvZmlsZV90YWJsZSh2aXJ1cykNCiAgDQogIHByaW50KGh0bWx0b29sczo6dGFnTGlzdCh2aXJ1c190YWJsZSkpDQogIA0KICBjYXQoJ1xuXG4jIyMnLCAnYWEgSWRlbnRpdHkgU3VtbWFyeSB7LnVubGlzdGVkIC51bm51bWJlcmVkfScsICdcblxuJykNCiAgDQogIHByaW50KHN1cHByZXNzTWVzc2FnZXMoDQogIHZpcnVzX21hc3Rlcl8yMDIzICU+JSANCiAgICBmaWx0ZXIodmlydXNfbmFtZSA9PSB2aXJ1cykgJT4lIA0KICAgIHNlbGVjdCgtImNvbnRpZ19zZXF1ZW5jZSIpICU+JSANCiAgICBnZ3Bsb3QoYWVzKHggPSBncmVhdGVzdF9pZGVudGl0eV9wZXJjZW50KSkgKw0KICAgIGdlb21faGlzdG9ncmFtKGFlcyhmaWxsID0gZ3JlYXRlc3RfaWRlbnRpdHlfcGVyY2VudCA8IDg1KSkgKw0KICAgIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IDg1LCBsaW5ldHlwZSA9ICJkb3R0ZWQiLCBjb2xvdXIgPSAiZmlyZWJyaWNrIikgKw0KICAgIHRoZW1lX2J3KCkgKw0KICAgIGxhYnModGl0bGUgPSBwYXN0ZTAoImFhIElkZW50aXR5IiksDQogICAgICAgc3VidGl0bGUgPSBwYXN0ZTAoIkZvciAiLCB2aXJ1cyksDQogICAgICAgeCA9ICJhYSBJZGVudGl0eSIsIA0KICAgICAgIHkgPSAiTnVtYmVyIG9mIENvbnRpZ3MiKSArDQogICAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYsIGZhY2UgPSAiYm9sZCIpLA0KICAgICAgICBheGlzLnRpdGxlLnggPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMC41KSkgKw0KICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikNCiAgKSkNCiAgDQp9DQoNCg0KYGBg